概念

一个后进先出、先进后出的数据结构。类似子弹夹的一个结构。
JavaScript中没有栈,但可以用Array实现所有的栈功能。

栈的应用场景

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

十二进制转二进制

image.png
该算法中,后出来的余数反而要排到前面,把余数依次入栈,然后再出栈,就可以实现余数倒序输出。

  1. function fn(target) {
  2. let t = target
  3. const arr = []
  4. while (t / 2) {
  5. const r = t % 2
  6. t = Math.floor(t / 2)
  7. arr.push(r)
  8. }
  9. const len = arr.length
  10. let result = 0
  11. for (let i = len; i > 0; i--) {
  12. const item = arr.pop()
  13. result += item * Math.pow(10, i - 1)
  14. }
  15. return result
  16. }
  17. console.log(fn(35))