#include "iostream"
using namespace std;
#define MAXQSIZE 5
typedef struct SqQuene{
int * base;
int front;
int rear;
}SqQuene;
void InitQuene(SqQuene &Q);
int QueneLength(SqQuene &Q);
void EnQueue(SqQuene &Q,int element);
void DeQueue(SqQuene &Q);
void main(){
SqQuene Q;
InitQuene(Q);
cout<<"输出初始化队列长度"<<endl;
cout<<QueneLength(Q)<<endl;
for (int i = 0;i<(MAXQSIZE-1);i++)
{ //插入数据
EnQueue(Q,i);
}
cout<<"输出插入数据之后的队列长度"<<endl;
cout<<QueneLength(Q)<<endl;
cout<<"输出删除的队首元素"<<endl;
DeQueue(Q);
cout<<"输出删除之后的队列长度"<<endl;
cout<<QueneLength(Q)<<endl;
}
void InitQuene(SqQuene &Q){
Q.base = (int*)malloc(MAXQSIZE * sizeof(int));
if (!Q.base)
{
exit(0);
}
Q.front = Q.rear = 0;
}
int QueneLength(SqQuene &Q){
return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}
void EnQueue(SqQuene &Q,int element){
if ((Q.rear+1)%MAXQSIZE==Q.front)
{
exit(0);//存满了
}
Q.base[Q.rear] = element;
Q.rear = (Q.rear+1)%MAXQSIZE;
}
void DeQueue(SqQuene &Q){
if (Q.front==Q.rear)
{
exit(0);
}
cout<<Q.base[Q.front]<<endl;
Q.front = (Q.front+1)%MAXQSIZE;
}