1 栈(Stack)
1.1 特点
(1)Stack:先入后出;添加、删除皆为 O(1)
1.2 演示
(1)主要API
(2)示例
1.3 问题分析
1.为什么函数调用要用“栈”来保存临时变量呢?用其他数据结构不行吗?
其实,我们不一定非要用栈来保存临时变量,只不过如果这个函数调用符合后进先出的特性,用栈这种数据结构来实现,是最顺理成章的选择。
2.JVM 内存管理中有个“堆栈”的概念。栈内存用来存储局部变量和方法调用,堆内存用来存储 Java 中的对象。那 JVM 里面的“栈”跟我们这里说的“栈”是不是一回事呢?如果不是,那它为什么又叫作“栈”呢?
内存中的堆栈和数据结构堆栈不是一个概念,可以说内存中的堆栈是真实存在的物理区,数据结构中的堆栈是抽象的数据存储结构。
2 队列(Queue)
2.1 特点
(1)Queue:先入先出;添加、删除皆为 O(1)
2.2 演示
(1)主要API
(2)示例
2.3 时间复杂度
3 双端队列(Deque)
3.1 特点
(1)Stack:两端可以进出的Queue,即是Deque - double ended queue;插入和删除都是 O(1) 操作;
3.2 演示
(1)主要API
(2)示例