第三章、栈和队列
3.1.1_栈的基本概念
栈的定义
栈的基本操作
栈的常考题型
思维导图
3.1.2_栈的顺序存储实现
顺序栈的定义
初始化操作
进栈操作
出栈操作
读栈顶元素操作
另一种方式
- 这种方式 t o p top top表示下一个可以插入的位置,而上一种方式的 t o p top top表示当前栈顶的位置
共享栈
思维导图
3.1.3_栈的链式存储实现
链栈的定义
- 链栈的插入和删除对应单链表的头插法和头部删除法
思维导图
3.2.1_队列的基本概念
队列的定义
队列的基本操作
思维导图
3.2.2_队列的顺序实现
初始化操作
入队操作
循环队列
循环队列-入队操作
循环队列-出队操作
方案一:判断队列已满/已空
方案二:判断队列已满/已空
- 如果为了不浪费那一个空间,会带来一个问题,就是队列满和队列空都是 r e a r = = f r o n t rear == front rear==front,但是可以根据多加的一个变量 s i z e size size来判断到底是满还是空
方案三:判断队列已满/已空
- 同方案二,不浪费一个空间
其他出题方法
思维导图
3.2.3_队列的链式存储结构
队列的链式实现
初始化(带头结点)
初始化(不带头结点)
入队(带头结点)
入队(不带头结点)
出队(带头结点)
出队(不带头结点)
队列满的条件
思维导图
3.2.4_双端队列
考点:判断输出序列合法性
思维导图
3.3.1_栈在括号匹配中的应用
括号匹配问题
算法演示
算法实现
思维导图
3.3.2_栈在表达式求值中的应用(一)
算数表达式
波兰数学家的灵感
中缀、后缀、前缀表达式
中缀表达式转后缀表达式(手算)
后缀表达式的计算(手算)
后缀表达式的计算(机算)
中缀表达式转前缀表达式(手算)
前缀表达式的计算
思维导图
3.3.2_栈在表达式求值中的应用(二)
中缀表达式转后缀表达式(机算)
中缀表达式的计算(用栈实现)
思维导图
3.3.3_栈在递归中的应用
函数调用背后的过程
栈在递归中的应用
思维导图
3.3.4_队列的应用
队列应用-树的层次遍历
队列应用-图的广度优先遍历
队列在操作系统中的应用
3.4_特殊矩阵的压缩存储
一维数组的存储结构
二维数组的存储结构
普通矩阵的存储
对称矩阵的存储压缩
三角矩阵的压缩存储
三对角矩阵的压缩存储
稀疏矩阵的压缩存储
思维导图