JavaScript 栈

72 阅读1分钟
  • 栈:先进后出,使用数组模拟,push为进,pop为出
const stack = [];
stack.push(1); 
stack.push(2); 
const item1 = stack.pop();
const item2 = stack.pop();

栈的应用场景

  • 需要后进先出的场景。
  • 比如:十进制转二进制、判断字符串的括号是否有效、函数调用堆栈.

十进制转二进制

image.png

  • 后出来的余数反而要排到前面。
  • 把余数依次入栈,然后再出栈,就可以实现余数倒序输出。

有效的括号

Leetcode 20. 有效的括号 image.png

  • 越靠后的左括号,对应的右括号越靠前。
  • 左括号入栈,右括号出栈,最后栈空了就是合法的。

函数调用堆栈

const func1 = () => {
    func2()
}
const func2 = () => {
    func3()
}
const func3 = () => { }

func1()
  • 最后调用的函数,最先执行完。
  • JS解释器使用栈来控制函数的调用顺序。

练习题

Leetcode 144. 二叉树的前序遍历

总结

  • 栈是一个后进先出的数据结构。
  • JavaScript中没有栈,但可以用Array实现找的所有功能。
  • 栈常用操作: push, pop, stack[stack.length-1]