#include <iostream>
using namespace std;
#define MaxSize 10
typedef struct SqQueue{
int data[MaxSize];
int front,rear;
}SqQueue;
void InitQueue(SqQueue &que);
bool IsEmpty(SqQueue que);
bool enQueue(SqQueue &que,int x);
bool deQueue(SqQueue &que,int &x);
int Length(SqQueue que);
int main()
{
SqQueue que;
InitQueue(que);
for(int i=0;i<5;i++)
cout<<enQueue(que,i);
cout<<Length(que)<<endl;
int ans;
cout<<deQueue(que,ans)<<endl;
cout<<Length(que)<<endl;
}
void InitQueue(SqQueue &que)
{
que.front=0;
que.rear=0;
}
bool IsEmpty(SqQueue que)
{
return (que.front==que.rear);
}
bool enQueue(SqQueue &que,int x)
{
if((que.rear+1)%MaxSize==que.front)
return false;
que.data[que.rear]=x;
que.rear=(que.rear+1)%MaxSize;
return true;
}
bool deQueue(SqQueue &que,int &x)
{
if(que.front==que.rear)return false;
x=que.data[que.front];
que.front=(que.front+1)%MaxSize;
return true;
}
int Length(SqQueue que)
{
return(que.rear-que.front+MaxSize)%MaxSize;
}