05.栈设计思想和原理
目录介绍
- 01.先看一道思考题
- 02.如何实现该功能
- 03.如何理解栈
- 04.如何实现一个栈
- 05.动态扩容顺序栈
- 06.栈的时间复杂度
- 07.栈在函数中场景
- 08.栈实现的浏览器
01.先看一道思考题
- 浏览器的前进、后退功能
- 当你依次访问完一串页面 a-b-c 之后,点击浏览器的后退按钮,就可以查看之前浏览过的页面 b 和 a。当你后退到页面 a,点击前进按钮,就可以重新查看页面 b 和 c。
- 但是,如果你后退到页面 b 后,点击了新的页面 d,那就无法再通过前进、后退功能查看页面 c 了。
02.如何实现该功能
- 假设你是 Chrome 浏览器的开发工程师,你会如何实现这个功能呢?
- 这就要用到我们今天要讲的“栈”这种数据结构。
03.如何理解栈
- 关于“栈”,一个非常贴切的例子,就是一摞叠在一起的盘子。
- 平时放盘子的时候,都是从下往上一个一个放;取的时候,我们也是从上往下一个一个地依次取,不能从中间任意抽出。
- 后进者先出,先进者后出,这就是典型的“栈”结构。
- 从栈的操作特性上来看
- 栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。
- 为何要使用链表