//basic queue
//#include <stdio.h>
//#define SIZE 5
//int queue[SIZE];
//int front=-1; //data가 마지막으로 나간 위치
//int rear=-1; //data가 마지막으로 저장된 위치
//
//void enqueue(int data)
//{
// //full check
// if(rear==SIZE-1)
// {
// printf("queue is full!!!\n");
// return ;
// }
// rear++;
// queue[rear]=data;
//}
//int dequeue()
//{
// //empty check
// if(front==rear) return 0;
// front++;
// return queue[front];
//}
//circular queue
#include <stdio.h>
#define SIZE 5
int queue[SIZE];
int front=0; //data가 마지막으로 나간 위치
int rear=0; //data가 마지막으로 저장된 위치
void enqueue(int data)
{
//full check
//if(rear==SIZE-1)
if((rear+1)%SIZE==front)
{
printf("queue is full!!!\n");
return;
}
rear=(rear+1)%SIZE;
queue[rear]=data;
}
int dequeue()
{
//empty check
if(front==rear)
{
return 0;
}
//front++;
front=(front+1)%SIZE;
return queue[front];
}
int main()
{
enqueue(1);
enqueue(2);
enqueue(3);
printf("deq data is %d\n",dequeue());
printf("deq data is %d\n",dequeue());
printf("deq data is %d\n",dequeue());
enqueue(1);
enqueue(2);
enqueue(3);
enqueue(4);
enqueue(5);
return 0;
}