参考《数据结构(C语言版)》- 严蔚敏 吴伟民 - 清华大学出版社
循环队列的结构定义
typedef struct
{
QElemType *base; //存储空间
int front; //头指针
int rear; //尾指针
}SqQueue;
队列初始化
void InitQueue(SqQueue &Q)
{
Q.base = (QElemType *)malloc(MAXQSIZE * sizeof(QElemType)); //创建空间
if (!Q.base) //创建失败则退出
exit(0);
Q.front = Q.rear = 0;
}
获得队列长度
int QueueLength(SqQueue Q)
{
return(Q.rear - Q.front + MAXQSIZE) % MAXQSIZE; //尾指针减去首指针得到队列元素个数
}
添加元素
void EnQueue(SqQueue &Q, QElemType e)
{
if ((Q.rear + 1) % MAXQSIZE == Q.front) //定义最后一个位置不放元素,表示队列已满
return;
Q.base[Q.rear] = e; //根据尾指针放置元素
Q.rear = (Q.rear + 1) % MAXQSIZE; //尾指针加1到下一个存储位置
}
删除元素
void DeQueue(SqQueue &Q, QElemType &e)
{
if (Q.front &#