数据结构与算法【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]
下一篇:
spring的ioc容器存储对象