//循环队列的基本操作
#include<stdio.h>
#define MaxSize 50
typedef int ElemType;
//定义循环队列结构体
typedef struct
{
ElemType data[MaxSize];
int front,rear;
}SqQueue;
//初始化
void InitQueue(SqQueue &Q)
{
Q.rear = Q.front = 0;
}
//判断队列是否为空
bool isEmpty(SqQueue &Q)
{
if(Q.rear == Q.front)//如果rear=front
return true;
else
return false;
}
//入队操作 入队:enqueue
bool EnQueue(SqQueue &Q, ElemType x)
{
if((Q.rear+1)%MaxSize == Q.front)//栈满
return false;
Q.data[Q.rear] = x;
Q.rear = (Q.rear+1)%MaxSize;
// printf("%d\n",Q.data[Q.rear]);
//用于显示入队数据return true;
}
//出队操作 出列:dequeue
bool DeQueue(SqQueue &Q, ElemType &x)
{
if(Q.rear == Q.front) //判断是否为空
return false;
x = Q.data[Q.front];
printf("%4d",x);
Q.front = (Q.front+1)%MaxSize;
//用于显示出队数据return true;
}
int main()
{
SqQueue q;
InitQueue(q);
printf("请输入你要进入队列的元素(Ctrl+z结束输入):\n");
int e;
while(scanf("%d", &e) != EOF) {
EnQueue(q, e);
}
printf("元素的出列顺序为:\n");
while(!isEmpty(q)) {
DeQueue(q, e);
}
return 0;
}