算法刻意练习之栈/队列/双端队列/优先队列

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)示例
在这里插入图片描述

4 优先队列(Priotity Queue)

4.1 特点

在这里插入图片描述

5 其他队列实现

在这里插入图片描述

6 复杂度分析汇总

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值