您好,欢迎来到品趣旅游知识分享网。
搜索
您的当前位置:首页如何用JavaScript实现一个栈

如何用JavaScript实现一个栈

来源:品趣旅游知识分享网

最后,用pop方法把栈中的元素都移除,把出栈的元素连接成字符串(行{5})。

测试一下:

console.log(pideBy2(520)); //
输出1000001000 console.log(pideBy2(10)); //输出1010 console.log(pideBy2(1000)); //输出1111101000

接下来,可以很容易的修改上面的算法,使它能够把十进制转化为任何进制。除了让十进制数字和2整除转成二进制数,还可以传入其他任意进制的基数作为参数,就像下面的算法这样:

function baseConverter (decNumber, base) {

 var remStack = new Stack(),
 rem,
 baseString = '';
 digits = '01234567ABCDEF'; //{6}

 while (decNumber>0) { 
 rem = Math.floor(decNumber % base);
 remStack.push(rem); //{3}
 decNumber = Math.floor(decNumber / base);
 }

 while (!remStack.isEmpty()) {
 baseString += digits[remStack.pop()]; //{7}
 }

 return baseString;
}

在将十进制转成二进制时,余数是0或1;在将十进制转成八进制时,余数时0-8之间的数;但是将十进制转成十六进制时,余数时0-9之间的数字加上A、B、C、D、E、F(对应10、11、12、13、14和15)。因此,需要对栈中的数字做个转化才可以(行{6}、{7})。

来测试一下输出结果:

console.log(baseConverter(1231,2)); //
输出10011001111 console.log(baseConverter(1231,8)); //输出2317 console.log(baseConverter(1231,16)); //输出4CF

显然是正确的。

小结

我们用js代码自己实现了栈。并且通过进制转换的例子来实际应用了它。栈的应用实例还有很多,比如平衡圆括号和汉诺塔。

Copyright © 2019- pqdy.cn 版权所有 赣ICP备2024042791号-6

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务