ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-06-13 09:07:40  阅读:291  来源: 互联网

标签:释放 线性表 傻傻 队列 存放 二叉树 分不清 指针


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)队列没有元素是,称为空队列。

 

标签:释放,线性表,傻傻,队列,存放,二叉树,分不清,指针
来源: https://www.cnblogs.com/c2g5201314/p/13111591.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有