使用js数组封装的栈结构 实现十进制转二进制
基本思路
输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2…依次循环,直到商为0结束,把余数倒着依次排列,就构成了转换后的二进制数。
假设输入100:
100/2得到余数0,将其压栈
50/2得到余数0,将其压栈
.
.
.
逐个出栈,得到二进制。
基于数组封装的栈结构
// 栈中的属性。js是弱类型语言,添加属性不用声明
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(){
var str="";
for(var i=0;i<this.items.length;i++){
str+=this.items[i]+"";
}
return str;
}
}
封装转换函数
function DecToBdc(Dnumber){
var stack=new Stack();
while(Dnumber>0){
// 将余数压入栈中
stack.push(Dnumber%2)
// 获取整除后的结果(向下取整),作为下一次运算的数字
Dnumber=Math.floor(Dnumber/2);
}
// 定义变量接收出栈的余数
var str="";
while(!stack.isEmpty()){
str+=stack.items.pop();
}
return str;
}
测试结果
console.log(DecToBdc(100));//1100100