js数组Array模拟栈以及相关实践

51 阅读1分钟

1.使用到的Array方法有:push()、pop()

2.栈对象代码:

class Stack {
    stack = [];
    // 入栈
    push(item) {
        return this.stack.push(item);
    }
    // 出栈
    pop() {
        return this.stack.pop();
    }
    // 栈顶元素
    topStack() {
        return this.stack.length > 0 ? this.stack[0] : undefined;
    }
    // 栈是否为空
    isEmpty() {
        return this.stack.length === 0;
    }
    // 清空栈
    clear() {
        this.stack = [];
    }
    // 栈大小
    size() {
        return this.stack.length;
    }
}

3.常见用法:

3.1栈实现进制转换:

/**
* 用栈实现进制转换
* @param {number} decNumber - 基数
* @param {number} base - 进制
* @returns {string} - 转换后的字符串
*/
function convert(decNumber, base) {
    if (base <= 1) {
        console.info("base至少要大于1");
        return decNumber;
    }
    const stack = new Stack();
    let number = decNumber;
    let str = "";
    let baseString = "0123456789ABCDEF";
    while (number > 0) {
        stack.arr.push(number % base);
        number = Math.floor(number / base);
    }
    while (!stack.isEmpty()) {
        str += baseString[stack.arr.pop()];
    }
    return str;
}