队列

逻辑结构

先进先出(First In First Out,FIFO)的线性表。
只允许在线性表的一端插入,另一端删除。
是一种受限线性表。

物理结构

顺序存储结构

顺序队列

分配一块地址连续的空间,并附设两个指针,front指向队头,rear指向队尾+1。

操作复杂度

入队 、出队均为_O(1)_。

循环队列

当队首指针front = Maxsize - 1时,再出队一个元素,就自动到0(由除余实现)。
出队和进队时的指针操作都要除余。

为了区分队满还是队空,有三种处理方式:

  • 牺牲一个单元使得队满变为(rear + 1) % Maxsize = front
  • 增加一个成员size指示队列长度
  • 增加一个成员tag指示:若tag=0时,删除后front = rear则为队空,若tag=1时,插入后front=rear则为队满

操作复杂度

入队、出队均为_O(1)_。

链式存储结构

链队列

实质上是一个带有队头指针和队尾指针的单链表。
特别适合数据元素变动比较大的情形,而且不存在队列满和溢出的问题。

操作复杂度

入队、出队均为_O(1)_。


posted @ 2023-03-23 15:56  青子Aozaki  阅读(30)  评论(0)    收藏  举报