사용자 도구


목차

가장 먼저 들어간 자료를 가장 먼저 뺄 수 있는 (FIFO - First In First Out) 자료 구조이다.

예제

queue.cpp
#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();
}

참고