数据结构与算法【JavaScript版】— 栈

栈简介

什么是栈

    一个后进先出的数据结构 JavaScript中没有栈,但可以用Array实现栈的所有功能

实例代码 —— 在JS中实现并运用栈

    实例代码
// 初始化一个数组
const stack = [];
// 入栈
stack.push(1);
stack.push(2);
// 出栈
const item1 = stack.pop(); // 移除数组最后一项并返回移除的item
const item2 = stack.pop();
    单步调试 在VSCode中可以按下F5,在NodeJS中执行脚本代码,并可以设置断点进行单步调试,通过左侧的Variables中可以看到pop会把后进栈的内容进行优先输出

什么场景下使用栈

栈的应用场景

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

场景1:十进制转二进制

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

场景2:有效的括号

    问题描述:给出一系列括号,计算数据中的括号是否都是有效的闭合 实现思路:越靠后的左括号,对应的右括号就是越靠前。左括号入栈,右括号出栈,最后栈空了就是合法的

场景3:函数调用堆栈

    最后调用的函数,最先执行完。调用greeing(),需要先执行sayHi()之后才会执行greeting()。 JS解释器使用栈来控制函数的调用顺序。

前端与栈 —— JS中的函数调用堆栈

//函数调用堆栈
const func1 = () => {
          
   
    func2();
};
const func2 = () => {
          
   
    func3();
};
const func3 = () => {
          
   };
func1();
    通过在VSCode进行debug,可以查看到函数调用堆栈的全过程,func1/2/3依次进栈,func3/2/1再依次出栈

章节总结

技术要点

    栈是一个后进先出的数据结构 JavaScript中没有栈,但可以用Array实现栈的所有功能 栈常用操作:push、pop、stack[strack.length - 1]
经验分享 程序员 微信小程序 职场和发展