/*循环队列的顺序存储结构及实现*/
//存储结构定义
const int QueueSize = 10; //定义数组最大长度
typedef int DataType;
typedef struct
{
DataType data[QueueSize]; //存放队列元素数组
int front,rear; //队头和对尾指针
}CirQueue;
//循环队列的初始化:将头指针和队尾指针同时指向数组某一位置,一般是数组的高端
void InitQueue(CirQueue &Q)
{
Q.front = Q.rear = QueueSize – 1;
}
//入队操作:将队尾指针rear在循环意义下加1,将待插入元素x插入到队尾
void EnQueue(CirQueue &Q,DataType)
{
if(Q.rear == Q.front)
{
printf(“下溢”);
exit(-1);
}
Q.front = (Q.front + 1)%QueueSize; //队头指针在循环意义下加1
return Q.data[Q.front]; //读取并返回出队前的队头元素
}
//取队头元素:与出队操作类似,区别是不改变队头指针
DataType GetFront(CirQueue &Q)
{
if(Q.rear == Q.front)
{
printf(“下溢”);
exit(-1);
}
i = (Q.front + 1)%QueueSize; //不改变队头指针
return Q.data[i];
}
//判空操作
int Empty(CirQueue &Q)
{
if(Q.rear == Q.front)
return 1; //队列为空返回1
else
return 0;
}