编辑代码

/**
 * js栈的实现
 */
class Stack {
    constructor(){
        this.dataStore = [];
        this.top = 0;
    }
    // 栈顶置入一个元素
    push(element){
        this.dataStore[this.top++] = element;
    }
    // 取出栈顶元素并返回
    pop(){
        return this.dataStore[--this.top];
    }
    // 返回栈顶元素
    peek(){
        return this.dataStore[this.top - 1];
    }
    // 返回栈元素个数
    length(){
        return this.top
    }
    // 清空栈
    clear(){
        this.top = 0;
    }
}
// var s = new Stack();
// s.push("David");
// s.push("Raymond");
// s.push("Bryan");
// console.log("length: " + s.length());
// console.log(s.peek());
// var popped = s.pop();
// console.log("The popped element is: " + popped);
// console.log(s.peek());
// s.push("Cynthia");
// console.log(s.peek());
// s.clear();
// console.log("length: " + s.length());
// console.log(s.peek());
// s.push("Clayton");
// console.log(s.peek());

/**
 * 使用栈结构进行进制转换
 */
function mulBase(num, base){
    const s = new Stack();
    do{
        s.push(num % base);
        num = Math.floor(num /= base);
    }while(num > 0);
    let converted = "";
    while(s.length() > 0){
        converted += s.pop();
    }
    return converted;
}
let num = 32;
let base = 2;
let newNum = mulBase(num, base);
console.log(num + " 转化为 " + base + " 进制:" + newNum);
num = 125;
base = 8;
newNum = mulBase(num, base);
console.log(num + " 转化为 " + base + " 进制:" + newNum);

/**
 * 使用栈结构进行字符串反转
 */
function reverse(str){
    const s = new Stack();
    for(let i = 0, len = str.length; i< len; i++){
        s.push(str[i]);
    }
    let res = '';
    while(s.length() > 0){
        res+=s.pop();
    }
    return res;
}

console.log(reverse('asdfghjkl'))