说说你对堆的理解?如何实现?应用场景?
网上有好多,但是都没有看懂,特别是如何实现这一部分😭
直接介绍 堆 还是需要学习很多前置知识的,建议去哔哩哔哩学习 JVM课程,让你全面的了解内存结构各个方面所负责的功能与作用
堆(heap)主要是用来动态分配内存,动态分配的原因在于,程序需要的内存,在编写程序的阶段不能确定用多少
比如说创建一个链表,你运行的时候要添加几个,编代码的时候不能确定,如果不动态分配,分配少了,程序不能创建很大的链表,分配多了,程序用不到白白浪费。
实现方式不需要你管,这个操作系统负责,你只要malloc free即可。
队列这个概念非常好理解,你可以把它想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队,先进者先出,这就是典型的队列。
上一篇讲到栈只支持两个基本操作:入栈和出栈。队列跟栈非常相似,支持的操作也很有限,最基本的操作也是两个:入队,放一个数据到队列尾部;出队,从队列头部取一个元素。
所以,队列跟栈一样,也是一种操作受限的线性表数据结构,队列的概念很好理解,基本操作也很容易掌握。作为一种非常基础的数据结构,队列的应用也非常广泛,特别是一些具有某些额外特性的队列,比如循环队列、阻塞队列、并发队列。