| | | | | |

 

#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100

typedef int element; //int형을 큐 element의 자료형으로 정의
typedef struct
{
	element queue[MAX_SIZE];  
	int front, rear;
} QueueType;

void init(QueueType *q)
{
	q->front=q->rear=0;
}

void error(char *message)
{
	fprintf(stderr,"%s\n",message);
	exit(1);
}

void enqueue(QueueType *q,element item)
{
	if((q->rear+1)%MAX_SIZE==q->front)
		error("큐가 포화상태입니다");
	q->rear=(q->rear+1)%MAX_SIZE;
	q->queue[q->rear]=item;
}

element dequeue(QueueType *q)
{
	if(q->front==q->rear)
		error("큐가 공백상태입니다");
	q->front=(q->front+1)%MAX_SIZE;
	return q->queue[q->front];
}


int main()
{
	QueueType q;
	init(&q);
	printf("item= %d \n",q.queue[q.front]);
	printf("front= %d \n",q.front);
	printf("rear= %d \n",q.rear); 
    
	enqueue(&q,99);
	enqueue(&q,88);

	printf("item= %d \n",q.queue[q.front]);
	printf("item= %d \n",q.queue[q.front+1]);
	printf("item= %d \n",q.queue[q.front+2]);
	printf("front= %d \n",q.front);
	printf("rear= %d \n",q.rear); 
    
	dequeue(&q);
	printf("item= %d \n",q.queue[q.front]);
	printf("item= %d \n",q.queue[q.front+1]);
	printf("item= %d \n",q.queue[q.front+2]);
	printf("front= %d \n",q.front);
	printf("rear= %d \n",q.rear); 
    
}