- 栈:先进后出,使用数组模拟,push为进,pop为出
const stack = [];
stack.push(1);
stack.push(2);
const item1 = stack.pop();
const item2 = stack.pop();
栈的应用场景
- 需要后进先出的场景。
- 比如:十进制转二进制、判断字符串的括号是否有效、函数调用堆栈.
十进制转二进制
- 后出来的余数反而要排到前面。
- 把余数依次入栈,然后再出栈,就可以实现余数倒序输出。
有效的括号
Leetcode 20. 有效的括号
- 越靠后的左括号,对应的右括号越靠前。
- 左括号入栈,右括号出栈,最后栈空了就是合法的。
函数调用堆栈
const func1 = () => {
func2()
}
const func2 = () => {
func3()
}
const func3 = () => { }
func1()
- 最后调用的函数,最先执行完。
- JS解释器使用栈来控制函数的调用顺序。
练习题
Leetcode 144. 二叉树的前序遍历
总结
- 栈是一个后进先出的数据结构。
- JavaScript中没有栈,但可以用Array实现找的所有功能。
- 栈常用操作: push, pop, stack[stack.length-1]