前言:栈是一种高效的数据结构。特点:先进后出,且只能从一端入栈与出栈。
此图是栈的结构图,图中可以看到,E方块最后入栈,所以最先出栈,而A方块只能最后出栈。

十进制转二进制,以10为例,二进制是1010。一直除2取整,当被除数<=0,得到所有余数后倒着排序,就是该数的二进制。
取数顺序: 二进制的取数顺序和栈的顺序相似,都是从后排往前取,利用这个共同点,我们尝试用栈的思想,将十进制转二进制。

首先封装一个Stack类,里面包含栈的基本操作
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
}
Stack.prototype.toString = function() {
var resultString = ""
for(var i=0; i<this.items.length; i++) {
resultString += this.items[i] + " "
}
return resultString
}
}
其次,利用Stack类,将十进制转成二进制
//十进制转二进制
function dec2bin(decNumber) {
var stack = new Stack();
while(decNumber > 0) {
stack.push(decNumber % 2)
decNumber = Math.floor(decNumber / 2)
}
var binaryString = ""
while (!stack.isEmpty()) {
binaryString += stack.pop()
}
return binaryString
}
console.log(dec2bin(10))
本文介绍了如何利用栈的先进后出特性,通过逐步除2取余的方法,将十进制转换为二进制。通过创建Stack类并实现基本操作,展示了将10转换为二进制的过程。
1万+

被折叠的 条评论
为什么被折叠?



