#include <iostream>
#include<malloc.h>
#define MaxSize 5
using namespace std;
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];
int front,rear;
}SqQueue;
void InitQueue(SqQueue *&q)
{
q=(SqQueue *)malloc(sizeof(SqQueue));
q->front=q->rear=0;
}
void DestroyQueue(SqQueue *&q)
{
free(q);
}
bool enQueue(SqQueue *q,ElemType e)
{
if((q->rear+1)%MaxSize==q->front)
return false;
q->rear=(q->rear+1)%MaxSize;
q->data[q->rear]=e;
return true;
}
bool deQueue(SqQueue *&q,ElemType &e)
{
if(q->rear==q->front)
return false;
q->front=(q->front+1)%MaxSize;
e=q->data[q->front];
return true;
}
int main()
{
SqQueue *q;
InitQueue(q);
enQueue(q,1);
enQueue(q,2);
enQueue(q,3);
enQueue(q,4);
int a[5];
for(int i=0;i<4;i++)
deQueue(q,a[i]);
for(i=0;i<4;i++)
cout<<a[i]<<" ";
enQueue(q,5);
enQueue(q,6);
enQueue(q,7);
enQueue(q,8);
for(i=0;i<4;i++)
deQueue(q,a[i]);
for(i=0;i<4;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}