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