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; } }