JS数据结构---栈内操作 处理十进制转二进制代码

在这里插入图片描述
计算十进制转换为二进制的过程可以当成把每个计算后取余的数字压入栈内的操作

具体实现过程如下

//           十进制转二进制代码
function dec2bin(decNumber){

    //定义栈
var stack=new Stack()
    //将数字压入栈内
while(decNumber>0){
    // 1- 获取余数 将其压入栈内
    stack.push(decNumber%2)
    // 2- 获取整除后的结果 作为下一次取余的数字
    decNumber=Math.floor(decNumber/2)

}
//               从栈内取出

var result=''
while(!stack.isEmpty()){
    //将栈顶数字依次压入数组中 
result+=stack.pop()

}
//返回结果
return result

}
console.log(dec2bin(1000))
console.log(dec2bin(100))
console.log(dec2bin(10))

在这里插入图片描述

手写思路:
-1.首先定义一个函数 并定义传入所需转换数字
-2.使用栈结构(此处需提前封装好栈 功能 如 pop push)


-3.循环判断(此处为将数字压入栈内操作) 数字是否大于0

  • 循环内部 :首先对传入的数字 取余(此处为十进制转二进制 需除2)然后 将数字取整后的结果更新 循环操作 直到数字小于等于0

-4. 首先定义一个空数组
-5. 循环判断(此处为将结果从栈内取出操作)栈内是否有元素

  • 循环内部 :空数组 加等 栈内每次取出的元素

下面是封装栈的代码 可省略

function Stack() {

    //栈 中的一些属性
    this.items = []
    //栈内操作

    //1.将元素压入栈
    Stack.prototype.push = function (element) {
        this.items.push(element)
    }

    //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.size = function () {
        return this.items.length
    }
 //6.toString方法
    Stack.prototype.toString = function () {
        var result = ''
        for (var i = 0; i < this.items.length; i++) {
            result += this.items[i]
        }
        return result
    }


}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值