第3章 栈、队列和数组
- 3.1 栈
- 3.2 队列
- 3.3 栈与队列的应用
- 3.4 数组和特殊矩阵
3.1 栈(1 10 11 20)
3.2 队列(6 12 14 17)
3.3 栈与队列的应用(6 11)
3.4 数组和特殊矩阵
3.1 栈
- T1
栈和队列具有相同的逻辑结构(线性结构)
栈和队列的ADT不同,先进后出和先进先出的关系,基本操作集也不同。 - T11
- 出栈序列的个数:
- T20
共享栈:栈顶对栈顶组合,若某一栈满,可利用另一个栈存储。
共享栈的好处:节省存储空间,降低上溢出的可能
3.2 队列
- T12
链式存储队列,删除元素时,头尾指针都可能需要更改。
通常删除只需修改头指针,但若删除的是最后一个元素,直接修改尾指针rear=front。
(链队列中,front指向头结点,即队头元素的前一个)
3.3 栈与队列的应用
- T6
递归通常比非递归效率低,因为递归在计算机实际执行过程中包含了很多重复的计算。 - T9
消除递归的方法:
1)人工模拟系统堆栈(递归的本质也是栈)
2)对于单向递归和尾递归,可以用迭代
循环:循环通常关注于重复执行一组指令直到特定条件为止,它可能不需要考虑前一次迭代的结果。
迭代:迭代更注重于逐步处理数据集或序列,每次迭代都可能基于上一次迭代的结果。 - T11
表达式求值的栈(两个易错点):
1)左括号进栈,右括号不进栈
2)遇操作符,先比较栈顶优先级,而不是入栈