JavaScript数据结构与算法之栈

40 阅读1分钟
// 栈
// 栈 遵循 先进后出 即只能从后面进行新增,从后面进行删除
function Stack() {
  this.arr = [];
  // 新增
  Stack.prototype.push = (element) => {
    this.arr.push(element);
  };
  // 删除
  Stack.prototype.pop = () => {
    return this.arr.pop();
  };
  // 查看栈顶
  Stack.prototype.peek = () => {
    return this.arr[this.arr.length - 1];
  };
  // 判断是否为空
  Stack.prototype.isEmpty = () => {
    return this.arr.length == 0;
  };
  // 获取长度
  Stack.prototype.size = () => {
    return this.arr.length;
  };
  Stack.prototype.toString = () => {
    let resultString = "";
    for (let i = 0; i < this.items.length; i++) {
      resultString += this.items[i] + " ";
    }
    return resultString;
  };
}

function dec2bin(decNumber) {
  const stack = new Stack();
  while (decNumber > 0) {
    stack.push(decNumber % 2);
    decNumber = Math.floor(decNumber / 2);
  }
  // 获取
  let binaryString = "";
  while (!stack.isEmpty()) {
    binaryString += stack.pop();
  }
  return binaryString;
}

console.log("dec2bin(100)", dec2bin(100));
console.log("dec2bin(100)", dec2bin(200));
console.log("dec2bin(100)", dec2bin(20));