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

循环链表insert方法中应在哪个位置抛出ListOverflowException异常

链表insert方法异常抛出位置修正方案

你需要在所有插入操作执行之前抛出ListOverflowException,原因很简单:如果已经修改了链表节点的指向再抛异常,会导致链表结构被破坏,产生脏数据。

另外你现有代码存在逻辑bug:首节点为空的if分支没有加else,首次插入节点时,if块内的逻辑执行完还会继续跑后续的endOfNode.setNext(iterator)等赋值代码,会重复设置节点指向,需要一并修复。

你需要先给链表类新增一个最大容量的成员变量,比如private final int maxCapacity,初始化链表时指定节点数上限值。修正后的完整代码如下:

public void insert(D data) throws ListOverflowException {
    // 第一步先校验容量,不符合插入条件直接抛出异常,此时未修改任何链表结构
    if (sizeOfList >= maxCapacity) {
        throw new ListOverflowException("Error! Can't add any more nodes");
    }

    Node<D> iterator = new Node<>(data);

    if(startOfNode == null) {       
        startOfNode = iterator;   
        endOfNode = iterator;      
        iterator.setNext(startOfNode); 
    } else { // 新增else,避免首节点插入时重复执行后续逻辑
        endOfNode.setNext(iterator); 
        endOfNode = iterator;      
        endOfNode.setNext(startOfNode); 
    }
    
    sizeOfList; // 更新列表的节点数量
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:36:02