You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

栈(Stack)上溢(Overflow)与下溢(Underflow)处理及方法完善求助

栈的上溢/下溢处理及方法完善

以下是满足需求的Stack类实现,包含容量限制、上溢/下溢错误抛出,以及完善的isEmpty和peek方法:

class Stack {
    constructor(maxCapacity = Infinity) {
        this.items = [];
        this.maxCapacity = maxCapacity;
    }

    push(item) {
        if (this.items.length >= this.maxCapacity) {
            throw new Error("Overflow");
        }
        this.items.push(item);
    }

    pop() {
        if (this.isEmpty()) {
            throw new Error("Underflow");
        }
        return this.items.pop();
    }

    isEmpty() {
        return this.items.length === 0;
    }

    peek() {
        if (this.isEmpty()) {
            // 若业务需要,此处也可抛出Underflow错误,按需调整
            return undefined;
        }
        return this.items[this.items.length - 1];
    }
}

关键实现说明

  • 容量限制:构造函数新增maxCapacity参数,默认设为Infinity(无限制),也可传入具体数值指定栈的最大容量
  • 上溢处理:push方法先检查当前栈元素数量是否已达最大容量,若是则抛出Overflow错误
  • 下溢处理:pop方法调用前通过isEmpty判断栈是否为空,为空则抛出Underflow错误(修复了原代码中判断逻辑错误的问题)
  • isEmpty方法:直接返回栈元素数组的长度是否为0,简洁准确
  • peek方法:返回栈顶元素(数组最后一位),若栈为空则返回undefined,可根据业务需求改为抛出错误

内容的提问来源于stack exchange,提问作者A.Haseeb Hamid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 22:55:56