前额叶是大脑控制中枢。> 人类是所有动物中,唯一能够自主控制自己的欲望、情绪和冲动的动物,能够为了将来更大的利益而延迟满足当下的需求。
今天,我们继续探索JS算法相关的知识点。我们来谈谈关于{栈| Stack}的相关知识点和具体的算法。
如果,想了解其他数据结构的算法介绍,可以参考我们已经发布的文章。如下是算法系列的往期文章。
文章list
好了,天不早了,干点正事哇。
文章概要
0.知识点简讲
1.后缀表达式
2.小行星碰撞
3.判断括号的正确性
4.每日温度
5.直方图最大面积
知识点简讲
栈是个啥
栈是一种遵从后进先出(LIFO
)原则的有序集合。新添加或待删除的元素都保存在栈的同一端,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。
栈也被用在编程语言的_编译器_和内存中保存变量、方法调用等,也被用于_浏览器历史记录_(浏览器的返回按钮)。
而在前端,Stack
耳熟能详的功能就是调用栈,调用栈就是用来管理函数调用关系的一种数据结构,是 JavaScript
引擎追踪函数执行的一个机制。
还有一个比较重要的用处就是在解析器中,无论是HTML
/Vue
/JavaScript
,在生成对应的AST
的时候,针对Token
进行匹配处理。此时,就可以利用Stack
后进先出的特性,进行匹配处理。
解析HTML生成的AST
解析Vue模板生成的AST
关于调用栈的详细介绍,可以翻阅我们之前文章。这里就不在赘述。
栈的应用(算法方向)
在一些题目中,数据保存的顺序和使用顺序相反,即最后保存的数据最先使用,这与栈的_后进先出_特性契合,可以将数据保存到栈中。