堆,栈,队列,单项链表,双向链表

 我来答
黑科技1718
2022-07-16 · TA获得超过5855个赞
知道小有建树答主
回答量:433
采纳率:97%
帮助的人:80.8万
展开全部
一、栈:乒乓球盒子,先进后出

使用场景:在编译器的语法检查中,一个过程就是检查各种括号是否匹配,比如 ([]) ,这就是匹配的,而 {[}] 就不匹配了。可以用栈来实现括号匹配。

二、队列:排队取餐,先进先出

使用场景:当多个任务分配给打印机时,为了防止冲突,创建一个队列,把任务入队,按先入先出的原则处理任务。

三、堆:是用数组来存储的 完全二叉树 的结构(完全二叉树就是除了最底层,其它层都必须填满,最后一层可以从左到右填满)

堆分为两种:最大堆和最小堆,两者的差别在于节点的排序方式。

在最大堆中,父节点的值比每一个子节点的值都要大。在最小堆中,父节点的值比每一个子节点的值都要小。这就是所谓的“堆属性”,并且这个属性对堆中的每一个节点都成立。

使用场景:给定一个数组,其中的元素都是无序杂乱的,我们怎么对它进行堆排序呢?

四、链表:单向链表和双向链表,每一个节点都由数据+指针组成。链表的头结点不存储数据,但头节点指针指向第一个真正有数据的节点

链表优点:
插入删除速度快
内存利用率高,不会浪费内存
大小没有固定,拓展很灵活。

链表缺点:
不能随机查找,必须从第一个开始遍历,查找效率低

数组的优点:
随机访问性强,查找速度快

数组的缺点:
插入和删除效率低
可能浪费内存
内存空间要求高,必须有足够的连续内存空间。
数组大小固定,不能动态拓展
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式