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


    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)队列没有元素是,称为空队列。
  • 相关阅读:
    与MS Project相关的两个项目
    最后的报告bug
    oo第二阶段的总结
    第一阶段的反思和改变
    面向对象设计与构造第四次课程总结
    面向对象设计与构造第三次课程总结
    面向对象设计与构造第一次课程总结
    OO游记之六月篇
    OO游记之五月篇
    OO游记之四月篇
  • 原文地址:https://www.cnblogs.com/c2g5201314/p/13111591.html
Copyright © 2020-2023  润新知