返回
JS中的Stack类实现及进制转换演示
前端
2024-02-10 16:02:05
- JS中的Stack类
首先,我们来创建一个Stack类,该类将提供一些基本的操作,如压入(push)、弹出(pop)、查看栈顶元素(peek)等。
class Stack {
constructor() {
this.items = [];
}
push(item) {
this.items.push(item);
}
pop() {
if (this.isEmpty()) {
return null;
}
return this.items.pop();
}
peek() {
if (this.isEmpty()) {
return null;
}
return this.items[this.items.length - 1];
}
isEmpty() {
return this.items.length === 0;
}
size() {
return this.items.length;
}
}
2. 进制转换
现在,我们来使用栈来实现进制转换。进制转换的过程如下:
- 将十进制数除以转换的目标进制,并将余数压入栈中。
- 重复步骤1,直到商为0。
- 将栈中的余数依次弹出,并连接起来,即可得到转换后的数字。
例如,将十进制数100转换为二进制,可以按照以下步骤进行:
- 100 ÷ 2 = 50,余数为0,压入栈中。
- 50 ÷ 2 = 25,余数为0,压入栈中。
- 25 ÷ 2 = 12,余数为1,压入栈中。
- 12 ÷ 2 = 6,余数为0,压入栈中。
- 6 ÷ 2 = 3,余数为0,压入栈中。
- 3 ÷ 2 = 1,余数为1,压入栈中。
- 1 ÷ 2 = 0,余数为1,压入栈中。
此时,栈中包含了余数0、1、1、0、0、1、1。将这些余数依次弹出,并连接起来,即可得到二进制数1100100。
3. 代码示例
以下是一个使用JavaScript实现进制转换的完整代码示例:
function进制转换(数字,目标进制) {
// 创建一个栈
const stack = new Stack();
// 将数字压入栈中
while (数字 > 0) {
stack.push(数字 %目标进制);
数字 = Math.floor(数字 /目标进制);
}
// 将栈中的余数依次弹出并连接起来
let结果 = "";
while (!stack.isEmpty()) {
结果 += stack.pop().toString();
}
// 返回转换后的数字
return结果;
}
// 测试进制转换函数
console.log(进制转换(100, 2)); // 1100100
console.log(进制转换(255, 16)); // FF
console.log(进制转换(12345, 8)); // 30071
4. 结语
通过本文,您已经了解了如何使用JavaScript来创建栈类,以及如何使用栈来实现进制转换。栈是一种非常有用的数据结构,在计算机科学中有着广泛的应用。希望本文能够帮助您理解栈的原理和应用,并在您的项目中使用栈来解决实际问题。