返回

JS中的Stack类实现及进制转换演示

前端

  1. 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. 将十进制数除以转换的目标进制,并将余数压入栈中。
  2. 重复步骤1,直到商为0。
  3. 将栈中的余数依次弹出,并连接起来,即可得到转换后的数字。

例如,将十进制数100转换为二进制,可以按照以下步骤进行:

  1. 100 ÷ 2 = 50,余数为0,压入栈中。
  2. 50 ÷ 2 = 25,余数为0,压入栈中。
  3. 25 ÷ 2 = 12,余数为1,压入栈中。
  4. 12 ÷ 2 = 6,余数为0,压入栈中。
  5. 6 ÷ 2 = 3,余数为0,压入栈中。
  6. 3 ÷ 2 = 1,余数为1,压入栈中。
  7. 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来创建栈类,以及如何使用栈来实现进制转换。栈是一种非常有用的数据结构,在计算机科学中有着广泛的应用。希望本文能够帮助您理解栈的原理和应用,并在您的项目中使用栈来解决实际问题。