JavaScript数据结构与算法--栈(上)

数据结构中的栈结构是一种遵循 后进先出(last in first out)原则的一个有序集合,新添加的元素保存在栈顶,最先插入的元素在栈底。

栈中一些常见的方法:
push(element) 添加新元素到栈顶,也可以一次添加多个。
pop() 移除栈顶元素,同时返回被移除的元素。
peek() 返回栈顶元素,不对栈做任何修改(不会移除栈顶元素)。
isEmpty() 判断栈是否为空,为空返回true,不为空返回false。
size() 返回栈里的元素个数。类似于数组中的length属性。
clear() 清除栈里的所有元素。

栈中大致就是上面的几种操作,下面我们就开始封装一个栈,在JavaScript中封装一个栈有两种思想:
(1)基于数组创建一个栈 。
(2)基于JavaScript对象创建一个栈。

(1)基于数组创建一个栈

    //创建一个基于数组的栈
    //封装栈类
    function MyStack(){
      this.items = []; //创建一个数组

      //1,向栈添加元素
      MyStack.prototype.push = function(element){
          for(let i=0;i<arguments.length;i++){
            this.items[this.items.length] = arguments[i]
          }
          return this.items.length;
      }

      //2,从栈中移除元素
      MyStack.prototype.pop = function(){
        return this.items.pop();
      }
      //3,查看栈顶元素
      MyStack.prototype.peek = function(){
        return this.items[this.items.length - 1];
      }
      //4,判断栈是否为空
      MyStack.prototype.isEmpty = function(){
        return this.items.length == 0;
      }
      //5,获取栈中元素个数
      MyStack.prototype.size = function(){
        return this.items.length;
      }
      //6,清空栈元素
      MyStack.prototype.clear = function(){
        return this.items = [];
      }
    }
    
    //栈的使用
    var s = new MyStack();
    s.push(10);
    s.push(20);
    s.push(30);
    console.log(s.peek()); //30
    console.log(s.isEmpty()); //false
    console.log(s.size()); //3

    s.pop(); 
    console.log(s.peek()); //20
    console.log(s.size()); //2
    s.clear(); 
    console.log(s.isEmpty()) //true

上面就是我基于数组封装的一个栈,关于另一个基于JavaScript对象创建一个栈下次继续哦!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章