/*circular queue*/
#include "stdio.h"
#define MAX 5
int insertcq(int *,int,int,int);
int deletecq(int,int);
void prntcq(int * ,int,int);
main()
{
int q[MAX],element,sel_num;
int front=0,rear=0;
while(printf("1.INSERT 2.DELETE 3.PRINT : "),scanf("%d",&sel_num)!=EOF)
{
switch(sel_num)
{
case 1 : printf("INPUT DATA :"),scanf("%d",&element),
rear=insertcq(q,element,rear,front); break;
case 2 : front=deletecq(front,rear); break;
case 3 : prntcq(q,front,rear); break;
default : printf("---INPUT ERROR---n");
}
}
}
int insertcq(int *_q,int _element,int _rear,int _front)
{
if(_rear==MAX-1 && _front==0)
{
printf("Warning Overflown");
return _rear;
}
_rear=(_rear+1)%MAX;
if(_rear==_front)
{
printf("Warning Overflown");
return _rear-1;
}
_q[_rear]=_element;
return _rear;
}
int deletecq(int _front,int _rear)
{
if(_front==_rear)
{
printf("Warning Underflown");
return _front;
}
_front=(_front+1)%MAX;
return _front;
}
void prntcq(int *_q ,int _front,int _rear)
{
while(_front != _rear)
{
_front=(_front+1)%MAX;
printf("%d ",_q[_front]);
}
putchar('n');
}
음,
아무리 그림을 그려서 설명하려해도..이해가 안되요...
특히 _front=(_front+1)%MAX;,_rear=(_rear+1)%MAX;
부분이요~~
이해좀 시켜주세요~~