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对象创建一个栈下次继续哦!!!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值