前端鲨鱼 2022-06-08 14:28 采纳率: 90%
浏览 23
已结题

关于#数据结构#的问题,如何解决?

JS数据结构 栈的应用 10进制转2进制
封装了栈 然后封装了转换函数
找不到哪里错了 显示不出来
下面是代码
//封装栈
function Stack(){
  this.items = []

  //栈的各种操作
  //push压栈 声明在原型里
  Stack.prototype.push = function(element){
    this.items.push(element)
  }
  //pop出栈
  Stack.prototype.pop = function(){
    this.items.pop()
  }
  //peek查看栈顶元素
  Stack.prototype.peek = function(){
    return this.items[this.items.length - 1]
  }
  //isEmpty判断栈是不是为空
  Stack.prototype.isEmpty = function(){
    return this.items.length == 0
  }
  //size栈内元素的个数
  Stack.prototype.size = function(){
    return this.items.length
  }
  //toString栈内元素合并为字符串 中间以','分隔
  Stack.prototype.toString = function(){
    let resultString = ''
    for(let i = 0; i < this.items.length; i++){
      resultString += this.items[i] + ' '
    }
    return resultString
  }
}

// let stack = new Stack()
// stack.push(1)
// stack.push(2)
// alert(stack.items)


//封装 10进制 -> 2进制 函数 dectobin
function dectobin(decNumber){
  let stack = new Stack()
  //把10进制数 除二 取余 压栈
  while(decNumber > 0){
    stack.push(decNumber % 2)
    decNumber = Math.floor(decNumber / 2)
  }
  //出栈 把栈里的数字连成字符串 binString
  var binString = ''
  while(!stack.isEmpty){
    binString += stack.pop()
  }
  return binString
}


//测试 dectobin 函数
alert(dectobin(15))





  • 写回答

2条回答 默认 最新

  • 那个角落有个bug 2022-06-08 16:34
    关注

    代码有两处问题
    1、出栈方法要加 return

    //  pop出栈
    Stack.prototype.pop = function(){
        return this.items.pop()
    }
    

    2、stack.isEmpty是个方法,调用时加()

    //  pop出栈
    while(!stack.isEmpty()){
         binString += stack.pop()
    }
    

    3、(建议)不要在方法内进行原型链扩展

    
    function Stack () {
        this.items = []
    }
    
    //push压栈 声明在原型里
    Stack.prototype.push = function(element){
        this.items.push(element)
    }
    

    结果:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月18日
  • 已采纳回答 6月10日
  • 创建了问题 6月8日

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)