乐趣区

数据结构栈

1、栈

2、栈实现

 //stack 构造函数
 class Stack {items = [];
    constructor() {}
    // 元素入栈,返回栈的大小
    push(el) {return this.items.push(el);
    }

    // 元素出栈,返回出栈元素
    pop() {return this.items.pop();
    }

    // 获取栈的大小
    size() {return this.items.length;}

    // 判断栈是否为空
    isEmpty() {return this.items.length === 0;}

    // 清空栈
    clear() {this.items = [];
    }
 }

3、应用 - 数值转换

 /***
  * @description 十进制转化为 N 进制函数
  * @param {Number} metadata 被转化的数值
  * @param {Number} n 指定被转化的进制
  * @returns {string} 
  */
 function binaryConversion(metadata, n) {
    // 初始化一个栈对象
    let stack = new Stack();
    let remainder = 0;
    let res = "";
    while(Math.floor(metadata / n) !== 0) {
      // 计算余数
      // debugger;
      remainder = metadata % n;

      switch(remainder) {
        case 10:
          remainder = "A";
          break;
        case 11:
          remainder = "B";
          break;
        case 12:
          remainder = "C";
          break;
        case 13:
          remainder = "D";
          break;
        case 14:
          remainder = "E";
          break;
        case 14:
          remainder = "F";
          break;
      }
      
      // 余数入栈
      stack.push(remainder);
      //metadata 重新赋值
      metadata = Math.floor(metadata / n);
    }
    // 最后一次计算余数没有入栈,这里需要加一次入栈操作
    remainder = metadata % n;
    stack.push(remainder);

    // 输出最后结果
    while(!stack.isEmpty()) {res += stack.pop();
    }
    return res;
 }
退出移动版