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

Java自定义LinkedList尾插节点陷入死循环问题求助

问题分析与解决方案

死循环原因

你的add_simple方法存在两个关键错误,直接导致死循环:

  1. 首次添加节点形成自引用环:当链表为空时,设置first_node=newNode后,执行last_node.next = newNode,此时last_node就是first_node,相当于把第一个节点的next指向自身,形成了环。后续调用方法时,while (null != last_node.next)会无限循环(因为节点的next永远指向自己)。
  2. 未正确利用last_node成员变量:每次添加都将last_node重置为first_node,然后从头遍历找尾节点,既低效又完全浪费了已有的尾节点引用。

代码修正

修正WA7_List.java的add_simple方法

直接利用last_node快速完成尾插,避免遍历和自引用问题:

public class WA7_List {
    private LinkedNode first_node;
    private LinkedNode last_node;
    private LinkedNode[] shortcuts;
    private int count_shortcuts;
    private int count_nodes;
    private int M;

    public WA7_List(int M) {
        this.first_node = null;
        this.last_node = null;
        this.shortcuts = null;
        this.count_nodes = 0;
        this.count_shortcuts = 0;
        this.M = M;
    }

    public void add_simple(double item) {
        LinkedNode newNode = new LinkedNode(null, item);
        if (first_node == null) {
            // 链表为空时,首尾节点均指向新节点
            first_node = newNode;
            last_node = newNode;
        } else {
            // 链表非空时,直接在尾节点后追加新节点,更新尾节点引用
            last_node.next = newNode;
            last_node = newNode;
        }
        count_nodes += 1; // 每次添加都更新节点计数
    }

    // 其他方法保持不变
}

修正Project.java的语法错误

原代码存在参数定义、数组初始化、变量作用域的问题,修正后如下:

public class Project{
    public static void main(String[] args) {
        // 正确初始化double数组
        double[] all_inserts = new double[]{0.76697, 0.08368, 0.37785, 0.07386, 0.77287};
        int M = 5; // 定义M的具体值(可根据需求修改)
        WA7_List linked_list = new WA7_List(M);
        for (int i=0; i<all_inserts.length; i++) {
            linked_list.add_simple(all_inserts[i]);
        }
    }
}

修正说明

  • 利用last_node直接定位尾节点,避免了从头遍历的低效操作,同时彻底解决了自引用导致的死循环问题。
  • 统一在方法末尾递增count_nodes,保证节点计数的准确性。
  • 修正了Project.java中的语法错误,确保代码可以正常编译运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 06:55:10