栈的入门(带图解)

744 阅读2分钟

栈的初步认识

数据结构:栈

  1. 是一个后进先出的数据结构
  2. JavaScript没有栈的数据结构
  3. 但是我们可以用Array来模拟栈这个数据结构

图解栈数据结构

生活中的例子看栈😎

先举个生活中的例子,比如你妈妈让你刷盘子,加入有五个盘子,你肯定事这样干的:

在这里插入图片描述 啥意思,就是你最先洗完的那个盘子肯定是放在最低下的,然后其他的挨个往上放,最后洗完的那个盘子肯定是放在最上面的😃 那当我们需要用这些盘子的时候,肯定也是挨个从上面依次拿一个用拿一个用,对吧😁 但是嘞,如果你告诉我,您洗完盘子是跟摆地雷阵似的,我还能说些什么,你会玩儿呗🤣

栈的数据存取

对于栈,它就和这个刷盘子放盘子差不多,每个盘子其实就相当于一个数据,放好的这些盘子的结构就是栈这种数据结构,当然,对于对于盘子我们有放和取两个基本操作,同样的,对于栈来说,无非也就是数据的存取。咋样,看的懂不😁

在JavaScript去模拟栈的数据结构

我们可以用断点调试,查看数据的变化

const stack = [];
stack.push(1);
stack.push(2);
const item1 = stack.pop();
const item2 = stack.pop();

LeetCode:20.有效的括号

  var isValid = function(s) {
      if(s.length%2 === 1) return false
      const stack = [];
      for(let i = 0;i < s.length;i ++){
          const c = s[i];
          if(c==='(' || c === '{' || c === '['){
              stack.push(c)
          } else {
              //) }
              const t = stack[stack.length - 1];
              // console.log(stack.length)
              // console.log(t)
              console.log(c)
              if(
                  (t === '(' && c === ')') || 
                  (t === '{' && c === '}') ||
                  (t === '[' && c === ']')
              ){
                  stack.pop()
              } else {
                  return false;
              }
          }
      }
      return stack.length === 0;
  };

  console.log(isValid("["))
  console.log(isValid("({[]})"))
  console.log(isValid("[]{}()")) 

下面咱看看队列的示意图吧:

这里的入队,出队,队尾和队头应该都好理解啊,看着图一目了然啊,这就是队列了,这么一看,是不是感觉队列也好简单啊,其实关于队列的概念,真的没啥难的😀

生活案例

车站排队买票

先买到票的人先出来 到这你们一改可以对它有一个大概的理解了吗??