队列
只允许在一端进行插入操作,而在另一端进行删除操作的线性表,即是一种先进先出(FIFO)的线性表。
抽象数据类型
ADT 队列(Queue)
Data
元素具有相同的类型,相邻的元素具有前驱和后继的关系
Operation
InitQueue(*Q) //初始化操作,建立一个空队列Q
DestroyQueue(*Q) //若队列Q存在,则销毁它
ClearQueue(Q) //将队列Q清空
QueueEmpty(Q) //若队列为空,返回true,否则返回false
GetHead(Q,*e) //若队列存在且非空,用e返回队列Q的队头元素
EnQueue(*Q,e) //若队列Q存在,插入新元素e到队列Q的队尾
DeQueue(*Q,*e) //删除队列Q的队尾元素,并用e返回其值
QueueLength(Q) //返回队列Q的元素个数
endADT
循环队列
队列顺序存储的不足
若使用数组存储队列,下标为0为开始,为n-1为末尾,为了减少操作的复杂度,定义