四、 栈与队列
直白理解:
- 栈:就像手枪装子弹,后面的字典将前面的子弹向下压,即数据流先进后出
- 队列:就像排队进场,先来的先进去,即数据流先进先出
定义:
- 栈是限定仅在表尾进行插入和删除操作的线性表
- 队列是只允许在一端进行插入操作、而在另一端进行删除操作的线性表
栈
应用:
- 浏览器的后退。
- 软件的撤销操作
定义:栈是限定仅在表尾进行插入和删除操作的线性表。允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),
不含任何数据的栈称为空栈。栈又被称为后进先出的线性表。
进栈出栈变化形式
有3个整形数字元素1、2、3依次进栈,会有哪些出栈顺序?
- 1进、2进、3进、3出、2出、1出
- 1进、1出,2进、2出,3进、3出
- 1进、2进、2出、1出、3进、3出
- 1进、2进、2出、3进、3出、1出
- 1进、1出、2进、3进、3出、2出
栈的插入和删除操作分别叫做push和pop
栈的顺序存储结构
两栈共享空间
数组有两个端点,两个栈有两个栈底,让一个栈的栈底为数组的始端,即下标为0出,
另一个栈的栈底为数组的末端,即下标为数组长度n-1处,两个栈如果增加元素,就是两端点向中间延伸。
(感觉像动态规划法,从两边向中间压栈)
栈的链式存储结构
栈的应用
- 递归。斐波那契系数
- 四则运算法则。逆波兰表达式