JavaScript 栈操作
■知识点
使用pushO和p0p()方法可以在数组尾部执行操作。其中pushO方法能够把一个或多个参数值附加到数组的尾部,并返回添加元素后的数组长度。pop()方法能够删除数组中最后一个元素,并返回被删除的元素。
栈遵循先进后出、后进先出原则。类似的行为在生活中比较常见,如佥放物品,叠在上面的总是先使用,还有弹夹中的子弹,以及文本框中输入和删除字符操作等。
■实例设计
下面运用栈运算来设计一个进制转换的问题。定义一个函数,接收十进制数字,然后返回一个二进制的字符串表示。
【设计思路】
把十进制数字转换为二进制值,实际上就是把数字与2进行取余,然后再使用相除结果与2继续取余。在运算过程中把每次的余数推入栈中,最后再出栈组合为字符串即可。
例如,把10转换为二进制的过程为:10/2 = 5余0, 5/2 = 2余1,2/2=1余0,1小于2余1,进栈后为: 0101,出找后为:1010,即10转换为二进制的值为1010。
【实现代码】
function d2b (num) {
var a = [] , r, b = ''; //a为栈,r为余数,b为二进制字符串
while (num>0) { //逐步求余
r = Math.floor(num % 2); //获取余数
a.push (r); //把余数推入栈中
num = Math.floor(num / 2); //获取相除后整数部分值,准备下一步求余
}
while (a.length) { //依次出栈,然后拼接为字符串
b += a.pop () .toString ();
}
return b; //返回二进制字符串
}
【应用代码】
console.log( d2b(59)); //返回 111011
console.log( (59).toString(2)) ; //返回 111011
十进制转二进制时,余数是0或1;同理十进制转八进制时,余数是0到7的整数;十进制转十六进制时,余数为0到9之间的数字加上A、B、C、D、E、F(对应10、11、12、13、14和15),因此,还需要对栈中的数字做转化。
点击加载更多评论>>