面试题:堆、栈、队列的区别以及使用场景

网友投稿 1133 2022-11-18

面试题:堆、栈、队列的区别以及使用场景

面试题:堆、栈、队列的区别以及使用场景

1. 堆和栈

JavaScript中的变量分为基本类型和引用类型:

所以对于堆和栈;

栈:栈是一种线性的数据结构,读取规则是先进后出。栈中的数据占用的内存空间的大小是确定的,便于代码执行时的入栈、出栈操作,并由系统自动分配和自动释放内存可以及时得到回收,相对于堆来说,更加容易管理内存空间。堆:堆是一种树形数据结构,读取相对复杂。堆是动态分配内存,内存大小不一,也不会自动释放。栈中的数据长度不定,且占空间比较大。便于开辟内存空间,更加方便存储。

堆栈内存分配:

程序运行时,每个线程分配一个栈,每个进程分配一个堆。也就是说,栈是线程独占的,堆是线程共用的。此外,栈创建的时候,大小是确定的,数据超过这个大小,就发生stack overflow错误,而堆的大小是不确定的,需要的话可以不断增加。

2. 栈和队列

(1)队列

队列是一种先进先出的数据结构。 队列在列表的末端增加项,在首端移除项。它允许在表的首端(队列头)进行删除操作,在表的末端(队列尾)进行插入操作;

(2)栈

应用场景:

栈可以用于字符匹配,数据反转等场景队列可以用于任务队列,共享打印机等场景堆可以用于优先队列,堆排序等场景

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Dockerfile编写规范
下一篇:一、docker入门(概念)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~