美文网首页
js栈的操作

js栈的操作

作者: 秘果_li | 来源:发表于2021-05-26 11:43 被阅读0次

    js模拟栈操作,输入两个数组,一个数组作为元素入栈顺序,另一个数组为出栈顺序,若出栈顺序符合入栈规则返回true

    // 定义一个栈
    function Stack () { 
        this.dataStore = []; 
        this.top = 0; 
        this.pop = pop; 
        this.push = push;
        this.peek = peek;   // 获取当前栈顶元素
        this.length = length;
    }
    
    function push( element ) {
        this.dataStore[this.top++] = element;
    }
    function pop() {
        return this.dataStore[--this.top];
    }
    function length() {
        return this.top;
    }
    function peek() {
        if( this.top > 0 ) {
          return this.dataStore[this.top-1];
        } 
        else return 'Empty';
    }
    
    function main(pushed,poped) {
      const stack = new Stack();
      let popIndex=0;
      pushed.forEach((item,index)=>{
      stack.push(item)
      while(stack.length() && stack.peek() === poped[popIndex]) {
        stack.pop()
        popIndex++;
      }  
    })
    return stack.top===0 ? true:false;
    }
    console.log(this.main([1,2,3,4,5],[4,5,3,2,1]));
    
    

    相关文章

      网友评论

          本文标题:js栈的操作

          本文链接:https://www.haomeiwen.com/subject/gnkcsltx.html