栈(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
相关产品推荐
相关产品推荐

