#include < iostream >
#define NUM 8
using namespace std;
typedef struct{
int data[NUM+1];
int front;
int rear;
}SqQueue;
void initQueue(SqQueue &qu){
qu.front = qu.rear = NUM;
}
int emptyQueue(SqQueue qu)
{
if(qu.front == qu.rear)
return 1;
else
return 0;
}
void enQueue(SqQueue &qu,int e)
{
if((qu.rear+1)%NUM==qu.front)
return;
qu.rear = (qu.rear+1)%NUM;
qu.data[qu.rear] = e;
}
void deQueue(SqQueue &qu,int &e)
{
if(emptyQueue(qu))
return;
qu.front = (qu.front+1)%NUM;
e = qu.data[qu.front];
}
int main()
{
int a[NUM] = {1,2,3,4,5,6,7,8};
SqQueue Q;
initQueue(Q);
int e;
for(int i=0;i<NUM;i++){
enQueue(Q,a[i]);
}
while(1){
deQueue(Q,e);
cout<<e<<" ";
if(emptyQueue(Q))
break;
else
{
deQueue(Q,e);
enQueue(Q,e);
}
}
return 0;
}