• 一个后进先出的数据结构
  • push(入栈),pop(出栈),js没有栈的概念但是可以用Array实现栈的所有功能
  1. const stack = [];
  2. stack.push(1);
  3. stack.push(2);
  4. const item1 = stack.pop();
  5. const item2 = stack.pop();

什么场景下使用栈

需要后进先出的场景

  • 十二进制转二进制
  • 判断字符串的括号是否有效,函数调用堆栈

十进制转二进制

数据结构-栈 - 图1

数据结构-栈 - 图2

20.有效的括号 — leetCode

  1. function isValid(s){
  2. let stack = [];
  3. let stackTop;
  4. if(s.length%2 === 1){
  5. return false
  6. }
  7. for(let i = 0;i++;i<s.length){
  8. if(s[i] === '[' || s[i] === '{' || s[i] === '('){
  9. stack.push(s[i])
  10. }else{
  11. stackTop = s[s.length-1];
  12. if(s[i] === ']' && stackTop === '[' || s[i] === '}' && stackTop === '{' || s[i] === ')' && stackTop === '('){
  13. stack.pop()
  14. }else{
  15. return false
  16. }
  17. }
  18. }
  19. return stack.length === 0
  20. }
  21. let arrs = ['[','{','}',']'];
  22. let res = isValid(arrs);
  23. console.log(res)

有效的括号