<pre name="code" class="objc">#include "sqQueue.h"
Status InitQueue(sqQueue &Q){
//初始化队列操作
Q.base = (QElemType *)malloc(MAXQSIZE*sizeof(QElemType));
if (!Q.base) exit(OVERFLOW);
Q.front = Q.rear = 0;
return OK;
}
Status DestroyQueue(sqQueue &Q){
//销毁队列操作
free(Q.base);
return OK;
}
Status EnQueue(sqQueue &Q, QElemType e){
//入队列(队尾)操作
if ((Q.rear + 1) % MAXQSIZE == Q.front) return ERROR;
Q.base[Q.rear] = e;
Q.rear=(Q.rear + 1) % MAXQSIZE;
return OK;
}
Status DeQueue(sqQueue &Q, QElemType &e){
//出队列(队头)操作
if (Q.rear == Q.front)return ERROR;
e = Q.base[Q.front];
Q.front = (Q.front + 1) % MAXQSIZE;
return OK;
}
Status ClearQueue(sqQueue &Q){
//清空队列
QElemType e;
while (Q.rear!=Q.front)
{
DeQueue(Q, e);
}
return OK;
}
Status QueueEmpty(sqQueue Q){
//判断队列为空
if (Q.rear == Q.front) return OK;
return ERROR;
}
Status GetHead(sqQueue Q, QElemType &e){
//获取队头元素
if (Q.front == Q.rear) return ERROR;
e = Q.base[Q.front];
return OK;
}
Status QueueTraverse(sqQueue Q){
//遍历队列
int i = Q.front;
if (Q.front == Q.rear) return ERROR;
while (i!=Q.rear)
{
printf("%d ", Q.base[i]);
i = (i + 1) % MAXQSIZE;
}
printf("\n");
return OK;
}
int QueueLength(sqQueue Q){
//返回队列的长度
if (Q.rear == Q.front) return 0;
return (Q.rear - Q.front + MAXQSIZE) % MAXQSIZE;
}
循环顺序队列
最新推荐文章于 2023-03-03 17:17:37 发布