가장 먼저 들어간 자료를 가장 먼저 뺄 수 있는 (FIFO - First In First Out) 자료 구조이다.
#include <stdio.h> #include <stdlib.h> struct Node { int value; Node *prev; Node *next; }; Node *head; void InitQueue() { head=(Node *)malloc(sizeof(Node)); head->prev=NULL; head->next=NULL; } void Insert(int data) { Node *New; Node *tail; for (tail=head;tail->next;tail=tail->next) {;} New=(Node *)malloc(sizeof(Node)); New->value=data; New->next=NULL; New->prev=tail; tail->next=New; } int Delete() { int data; Node *Target; Target=head->next; if (Target==NULL) { return -1; } data=Target->value; head->next=Target->next; if (head->next) { head->next->prev=head; } free(Target); return data; } void FreeQueue() { while (Delete()!=-1) {;} free(head); head=NULL; } void main() { int i; InitQueue(); for (i=0;i<100;i++) { Insert(i); } for (i=0;i<100;i++) { printf("%d ",Delete()); } FreeQueue(); }