前端鲨鱼 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 对于这个问题的代码运行
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败