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

2021-02-20 18:09:47 浏览数 (6872)

微信截图_20210220093819

计算十进制转换为二进制的过程可以当成把每个计算后取余的数字压入栈内的操作

具体实现过程如下

//           十进制转二进制代码
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))

微信截图_20210220093917

手写思路:

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
    }
}