赞
踩
当队列不可再继续插入新的队尾元素(数组越界),此事又不宜进行存储再分配扩大数组空间,队列实际空间未占满,巧妙的办法就是将顺序队列臆造为一个环状的空间。
//----循环队列----
typedef struct {
QElemType* base;//初始化的动态分配存储空间
int front;//头指针,若队列不空,指向队列头元素
int rear;//尾指针,若队列不空,指向队列尾元素的下一个位置
}SqQueue;
Status InitQueue(SqQueue& Q);
//构造一个空队列Q
int QueueLength(SqQueue Q);
//返回Q的元素个数,即队列的长度
Status EnQueue(SqQueue& Q, QElemType e);
//插入元素e为Q的新的队尾元素
Status DeQueue(SqQueue& Q, QElemType& e);
//若队列不空,则删除Q的队头元素,用e返回其值,并返回OK;否则返回ERROR
void PrintQueue(SqQueue Q);
//打印队列
//----基本操作的函数原型说明---- Status InitQueue(SqQueue& Q); //构造一个空队列Q int QueueLength(SqQueue Q); //返回Q的元素个数,即队列的长度 Status EnQueue(SqQueue& Q, QElemType e); //插入元素e为Q的新的队尾元素 Status DeQueue(SqQueue& Q, QElemType& e); //若队列不空,则删除Q的队头元素,用e返回其值,并返回OK;否则返回ERROR void PrintQueue(SqQueue Q); //打印队列 //----基本操作的算法描述---- Status InitQueue(SqQueue& Q) { Q.base = (QElemType*)malloc(MAXQSIZE *
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。