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


    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)队列没有元素是,称为空队列。
  • 相关阅读:
    PHP笔记
    HTML5储存
    KeyDown,KeyPress和KeyUp详解(转)
    Vue.js和angular.js区别
    java 解析json的问题
    在Eclipse中使用JUnit4进行单元测试
    Ibatis代码自动生成工具——Abator安装与应用实例(图解)
    IT人员----怎么把电脑窗口设置成淡绿色
    Java面试题之数据库三范式是什么
    Java面试题之jsp相关
  • 原文地址:https://www.cnblogs.com/c2g5201314/p/13111591.html
Copyright © 2020-2023  润新知