Java自定义Stack类peek方法实现求助(不可新增实例变量)
Stack类peek方法实现方案(无新增实例变量)
实现代码
基于你描述的Stack依赖自定义List、通过操作头部实现push/pop的场景,peek方法可按如下方式实现:
public Object peek() { if (isEmpty()) { // 可根据需求返回null,或抛出EmptyStackException return null; } // 仅使用方法内部定义的临时变量 Object tempTop = pop(); push(tempTop); return tempTop; } // 辅助判断空栈的方法(假设自定义List提供isEmpty方法,或基于List现有逻辑实现) public boolean isEmpty() { return stackList.isEmpty(); }
原理说明
- 临时变量中转:调用已实现的
pop()方法取出栈顶元素,用方法内部的tempTop变量暂存,此时栈顶元素被移除。 - 恢复栈结构:立即调用
push(tempTop)将暂存的元素重新放回栈顶,栈的元素数量、顺序完全恢复到调用peek前的状态。 - 符合约束要求:整个过程仅使用方法内部定义的临时变量,未新增任何Stack类的实例变量,完全满足教授的限制条件。
边界情况处理
- 空栈场景:提前判断栈是否为空,避免调用
pop()时触发空指针或自定义异常;若需求要求空栈抛出异常,可直接省略判断,让pop()的异常自然抛出。 - 单元素栈:
pop()取出唯一元素后再push回去,栈的状态不受任何影响,正常返回该元素。
内容的提问来源于stack exchange,提问作者newguy
相关产品推荐
相关产品推荐

