/*
#include<stdio.h>
#define size 5
int que[size];
int re=-1,fr=-1;
void enq(int data)
{
if(re==size-1)
{
printf("queue is full\n");
return ;
}
que[++re]=data;
}
int deq()
{
if(re==fr)
{
printf("queue is empty\n");
return -1;
}
return que[++fr];
}
void view()
{
printf("------------------\n");
for(int i=fr+1;i<=re;i++)
{
printf("%d ",que[i]);
}
printf("\n------------------\n");
}
*/
//CIRCULAR QUEUE (1 EMPTY)
//front가 가리키는 부분은 항상 비워놓는 곳
//왜 비워야할까?? full empty를 구분하기 위해서
#include<stdio.h>
#define size 11
int cque[size]={};
int re=0,fr=0;
void enq(int data)
{
if((re+1)%size==fr)
{
printf("cqueue is full\n");
return ;
}
re=(re+1)%size;
cque[re]=data;
}
int deq()
{
int data;
if(re==fr)
{
printf("cqueue is empty\n");
return -1;
}
fr=(fr+1)%size;
data=cque[fr];
cque[fr]=0;
return printf("%d",data);;
}
void view()
{
printf("----------------------------\n");
for(int i=0;i<size;i++)
printf("%d ",i);
printf("\n");
for(int i=0;i<size;i++)
printf("%d ",cque[i]);
printf("\n----------------------------\n");
}
void change()
{
}
int main()
{
int n, c;
while(1)
{
printf("cqueue 1.enq 2.deq 3.front,rear 4.change>> ");
scanf("%d",&n);
if(n==1)
{
printf("enq data >> ");
scanf("%d",&c);
enq(c);
view();
}
else if(n==2)
{
deq();
view();
}
else if(n=3)
{
printf("front : %d rear : %d\n",fr,re);
}
else
{
}
}
}
/*
#include<stdio.h>
#include<stdio.h>
int main()
{
int n,o=0,p=0;
char s[100];
scanf("%s",s);
for(int i=0; i<=strlen(s); i++)
{
if(s[i]=='(')
}
}
/*/