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

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();
}

原理说明

  1. 临时变量中转:调用已实现的pop()方法取出栈顶元素,用方法内部的tempTop变量暂存,此时栈顶元素被移除。
  2. 恢复栈结构:立即调用push(tempTop)将暂存的元素重新放回栈顶,栈的元素数量、顺序完全恢复到调用peek前的状态。
  3. 符合约束要求:整个过程仅使用方法内部定义的临时变量,未新增任何Stack类的实例变量,完全满足教授的限制条件。

边界情况处理

  • 空栈场景:提前判断栈是否为空,避免调用pop()时触发空指针或自定义异常;若需求要求空栈抛出异常,可直接省略判断,让pop()的异常自然抛出。
  • 单元素栈:pop()取出唯一元素后再push回去,栈的状态不受任何影响,正常返回该元素。

内容的提问来源于stack exchange,提问作者newguy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 10:42:14