JS 栈实现

栈实现​

受限的线性结构,后进先出,LIFO后进先出,从末尾插入元素,为进栈,从末尾删除元素,为出栈

​ 栈应用:

​ 函数调用栈:A调用B,B调用C,C调用D,就是一个函数调用栈,递归就会出现栈溢出

栈封装:
function Stack() {
    //栈的属性
    this.items = []

    //栈的相关操作
    //1.将元素压入栈
    Stack.prototype.push = function(element) {
      this.items.push(element);
    }
    //2.从栈中取出元素
    Stack.prototype.pop = function() {
      this.items.pop();
    }
    //3.查看栈顶元素
    Stack.prototype.peek = function() {
      return this.items[this.items.length-1]
    }
    //4.判断栈是否是空
    Stack.prototype.isEmpty = function() {
      return this.items.length == 0;
    }
    //5.获取栈中元素个数
    Stack.prototype.size = function() {
      return this.items.length;
    }
    //6.toString方法
    Stack.prototype.toString = function() {
      var resultString = '';
      for(var i = 0; i<this.items.length; i++){
        resultString += this.items[i]+ ' ';
      }
    }
  }
实际应用:
//十进制to二进制
  function dec2bin(decNumber) {
    //1.定义一个栈对象
    var stack = new Stack();
    //2.循环操作
    while(decNumber > 0){
      //2.1获取余数,放入栈中
      stack.push(decNumber%2);
      //2.2获取整除后的结果,用于下一次运算
      decNumber = Math.floor(decNumber/2);
    }
    //3.从栈中取出值
    var binargString = '';
    while(!stack.isEmpty()){
      binargString += stack.pop()
    }
    return binargString;
  }
  //测试
  alert(dec2bin(10))
  alert(dec2bin(20))
  alert(dec2bin(18))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值