码迷,mamicode.com
首页 > 其他好文 > 详细

简单谈谈 堆、栈、队列 【不要傻傻分不清】

时间:2020-06-13 10:35:03      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:heap   color   最大值   链表   col   ack   二级缓存   span   动态   

1.堆【heap】

(1)堆总是一颗完全二叉树【深度为K,除了k层外,1~k-1层的结点数都达到最大值,k层所有的节点都连续集中在最左边的就是完全二叉树】

(2)堆 不是在程序编译时申请内存的,而是在程序运行时向操作系统申请内存空间,即动态分配内存空间,一般是申请/给予的过程;
3)堆通常可被看作一棵树的数组对象,如堆排序;
4)用来存放由 new 创建的对象和数组,由程序员分配和释放,如果程序员不释放,最终会被系统回收;
5)存放在二级缓存,生命周期由垃圾回收算法决定,不是一旦成为孤儿对象就立刻被回收的。

2.栈【stack】

(1)栈,又名栈堆,是线性表;

(2)仅能在链表的一端做插入/删除运算,一端为栈顶,另一端就是栈底了;

(3)数据是先进后出的数据结构 ,就像一个水杯【或水桶】,先进来的在底部,最后才能出去;

(4)由操作系统自动分配和释放,用于存放函数的参数值 和局部变量的值;

(5)存放在一级缓存,调用完毕立即释放。

3.队列【queue】

(1)队列是种特殊的线性表,与栈有很大的区别,因为队列只能在队头做删除操作,只能在队尾做插入操作,即先进先出;
2)建立顺序队列结构时,必须为其静态分配或动态申请一片连续的存储空间,并设立两个指针进行管理,一个是队头指针front,指向前一个元素的存储位置,一个是队尾指针rear,指向后一个元素的存储位置;
3)队列没有元素是,称为空队列。

 

简单谈谈 堆、栈、队列 【不要傻傻分不清】

标签:heap   color   最大值   链表   col   ack   二级缓存   span   动态   

原文地址:https://www.cnblogs.com/c2g5201314/p/13111591.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!