5.3. 박인서 ¶
- 큐
 
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
	int val;
	struct node* next;
}node;
void push(node *, int);
int pop(node *);
int main()
{
	node head;
	head.next=NULL;
	push(&head,1);
	push(&head,2);
	push(&head,3);
	push(&head,4);
	printf("%d ",pop(&head));
	printf("%d ",pop(&head));
	printf("%d ",pop(&head));
	printf("%d ",pop(&head));
	return 0;
}
void push(node * target, int val)
{
	node * newnode=(node *)malloc(sizeof(node));
	node * temp=target->next;
	newnode->val=val;
	target->next=newnode;
	newnode->next=temp;
}
int pop(node * target)
{
	int res;
	node * kill=(node *)malloc(sizeof(node));
	if(target==NULL) abort();
	else if(target->next->next!=NULL) res=pop(target->next);
	else
	{
		res=target->next->val;
		kill=target->next;
		target->next=NULL;
		free(kill);
	}
	return res;
}
5.5.1. 큐 ¶
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
	int v;
	struct node* next;
}node;
node* push(node*, int);
int pop(node*);
void freeAll(node*);
void main(){
	node head;
	head.next = NULL;
	node* last = &head;
	last = push(last, 1);
	last = push(last, 2);
	last = push(last, 3);
	last = push(last, 4);
	printf("%d\n",pop(&head));
	printf("%d\n", pop(&head));
	printf("---freeAll----\n");
	freeAll(&head);
	printf("\n");
}
node* push(node* lt, int val){
	node* tmp = (node*)malloc(sizeof(node));
	tmp->next = NULL;
	tmp->v = val;
	lt->next = tmp;
	lt = lt->next;
	return lt;
}
int pop(node* hd){
	if (hd->next != NULL) abort;
	node* tmp = (node*)malloc(sizeof(node));
	int val;
	tmp = hd->next;
	val = tmp->v;
	hd->next = tmp->next;
	free(tmp);
	return val;
}
void freeAll(node* hd){
	node* ntp;
	while (hd->next != NULL){
		ntp = hd->next;
		printf("%d ", ntp->v);
		ntp = ntp->next;
		free(hd->next);
		hd->next = ntp;
	}
}










