← 首页·文章列表

数据结构三 栈和队列专题知识点复习

一、栈与队列的基本概念

1. 共同点

2. 区别与存取原则

结构 存取原则 插入端 删除端
栈 先进后出 (LIFO) 栈顶 栈顶
队列 先进先出 (FIFO) 队尾 (rear) 队头/队首 (front)

3. 关于表结构的通用理解


二、顺序队列与循环队列

1. 普通顺序队列

2. 循环队列的存储特点

3. 循环队列核心公式(必须掌握)

设:front 指向队首元素,rear 指向队尾元素的下一空闲位置,MAXLEN 为数组总长度。

操作/判断 公式
队空条件 front == rear
队满条件 (rear + 1) % MAXLEN == front
入队后 rear 移动 rear = (rear + 1) % MAXLEN
出队后 front 移动 front = (front + 1) % MAXLEN
队列中元素个数 (rear - front + MAXLEN) % MAXLEN
队尾元素所在位置 (rear - 1 + MAXLEN) % MAXLEN

4. 公式理解:环形思想

5. 典型题目举例

例1:数组大小6,front=3, rear=0,先删一个元素,再加入两个元素,求新的 front 和 rear。

例2:最大容量为 n 的循环队列,队满条件是什么?

例3:数组 Q[n] 表示循环队列,f 为队头元素的前一位置,r 为队尾元素的位置,求队列元素个数。

例4:非循环顺序队列,最多元素 m0(下标 0~m0-1),队满条件是什么?


三、链队列

1. 结构特点

2. 链队列是否会出现队满?

3. 出队操作


四、易混判断题辨析

判断内容 正误 解析
栈和队列都是顺序存储的线性结构 错 它们是线性结构,但存储方式可以是顺序的也可以是链式的,不限于顺序存储。
队列是限制在两端进行操作的线性表 对 一端插入(队尾),一端删除(队头),操作限制在两端。
链队列在一定范围内不会出现队满 对 链式存储按需分配,不会出现"队满"状态(除非内存耗尽)。
同一个表结构既可以是栈也可以是队列 对 物理结构相同,只是施加的操作限制不同。
循环队列 rear>front 时元素个数 = rear-front 对 此时 rear 在 front 之后且未跨数组末尾,环形公式退化为 rear - front。
链队列出队时会改变 front 指针的值 错 有头结点时,front 始终指向头结点,出队只改变 front->next。
栈和队列的存储方式既可是顺序也可是链接 对 两种存储方式都适用。

五、知识速记卡

  1. 循环队列三要素:取模实现循环、牺牲一单元判满、(rear-front+MAXLEN)%MAXLEN 算个数。
  2. 判空 vs 判满:空是 front == rear;满是 (rear+1)%MAXLEN == front,两个公式长的像但不能混。
  3. 链队列:有头结点、动态扩容不队满、出队不改变 front 指针值。
  4. 栈与队列:都是线性结构、都是端点操作、都能顺序/链式存储;区别在存取原则——栈是后进先出,队列是先进先出。