文章目录
- 队列的定义
- 队列的基本运算
- 队列的存储结构
队列的定义
队列先进先出,仅允许一端插入、一端删除
队尾(Rear),插入
队头(Front),删除
队列的基本运算
队列的基本运算
- 初始化空队列:initQueue(Q)
- 判队空:isEmpty(Q)
- 入队:enQueue(Q,x)元素x加入队尾,更新队尾指针
- 出队:deQueue(Q)删除队头元素,更新队头指针
- 读队头元素:frontQueue(Q)返回队头元素,但不修改队头指针
队列的存储结构
队列有顺序存储、链式存储两种存储结构。
- 顺序存储:用地址连续的存储单元存储。需要设置队头指针、队尾指针。队列的容量预先申请,是有限的。为充分利用队列空间,将顺序队列想象成环状结构,称为循环队列。
- 循环队列通过对队列容量取模实现。由于队列为空、满时,队头和队尾指针都在同样的位置。为了区分队列是空是满,有2种方法。一种是使用一个标志域,专用于描述队列空、满。另一种是牺牲一个元素空间,约定“队尾指针的下一个位置是队头”表示队满,队头队尾指针相同时表示队空。
- 链式存储:用链表存储队列,除队头、队尾外,使用一个头结点,其指针域指向队头。
队列常应用于需要排队的场合,例如打印任务的打印队列,离散事件的计算机模拟。