• 用栈实现一个十进制转二进制


    第一步 通过js 实现一个栈

    //  封装栈
    function Stack() {
    
      //  栈的属性
      this.items = []
    
      //  栈的相关操作
      //  1. 压栈
      Stack.prototype.push  = function(ele) {
        this.items.push(ele)
      }
    
      //  2. 从栈中取出元素
      Stack.prototype.pop  = function() {
        return 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.length = function() {
        return this.items.length
      }
      
      //  6. toString方法
      Stack.prototype.toString = function() {
        // return this.items.toString()
        var resString = ''
        this.items.forEach( i => {
          resString += i + ' '
        } )
        return resString
      }
     
    }
    

    第二步 通过栈的形式 实现十进制转二进制

    
    // 函数: 将十进制转二进制
    function dec2bin(decNumber) {
    
      // 不是数字返回 Err
      if(isNaN(decNumber)) throw('decNumber must a number' )
    
      if(decNumber === 0) return '0'
    
      // 取绝对值, 用来处理负数
      var absDecNumber = Math.abs(decNumber)
    
      // 1. 定义栈对象
      var stack = new Stack()
    
      // 2.循环操作
      while(absDecNumber > 0) {
        // 2.1 获取余数 压入栈中
        stack.push(absDecNumber % 2)
    
        // 2.2 获取整除后的余数结果,作为下一次允许的数字
        absDecNumber = Math.floor(absDecNumber / 2)
    
      }
    
      // 3. 从栈中取出 0 和 1
      var  binaryString = decNumber < 0 ? '-' : ''
      while(!stack.isEmpty()) {
        binaryString += stack.pop()
      }
    
      return binaryString
    }
    
    
  • 相关阅读:
    Raft Consensus Algorithm 分布式系统一致性协议
    Dynamic Programming 类问题的空间优化方法
    Bellman–Ford and SPFA Algorithm
    K8S
    SegmentTree
    TCP TIME_WAIT 状态
    When does locking or MVCC occur? Where do I need to specify which one the database should use?
    神经网络的工作原理
    React Native:State 及其 生命周期
    Css Animation
  • 原文地址:https://www.cnblogs.com/vant850/p/11621954.html
Copyright © 2020-2023  润新知