理解 "栈" "队列","堆"(后进先出)

Posted yangwenbo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解 "栈" "队列","堆"(后进先出)相关的知识,希望对你有一定的参考价值。

【栈】

??函数调用形成了一个栈帧

function foo(b) {
  var a = 10;
  return a + b + 11;
}
function bar(x) {
  var y = 3;
  return foo(x * y);
}
console.log(bar(7));

当调用bar时,创建了第一个帧 ,帧中包含了bar的参数和局部变量。当bar调用foo时,第二个帧就被创建,并被压到第一个帧之上,帧中包含了foo的参数和局部变量。当foo返回时,最上层的帧就被弹出栈(剩下bar函数的调用帧 )。当bar返回的时候,栈就空了

【堆】

??对象被分配在一个堆中,即用以表示一个大部分非结构化的内存区域

【队列】

??一个 javascript 运行时包含了一个待处理的消息队列。每一个消息都与一个函数相关联。当栈拥有足够内存时,从队列中取出一个消息进行处理。这个处理过程包含了调用与这个消息相关联的函数(以及因而创建了一个初始堆栈帧)。当栈再次为空的时候,也就意味着消息处理结束

 

原文地址:https://www.xiaohuochai.cc/posts/5ad9d7dc352ca82950939e4f

以上是关于理解 "栈" "队列","堆"(后进先出)的主要内容,如果未能解决你的问题,请参考以下文章

[leetcode]剑指 Offer 09. 用两个栈实现队列

Python实现栈队列

剑指Offer7:两个栈实现队

Leetcode——栈和队列

第十周学习

第十周学习