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

有序链表插入问题求助:新手代码末尾元素处理异常

解决有序链表末尾元素插入问题

嘿,刚入门编程碰到链表的坑太正常了,别着急!我来帮你搞定这个末尾插入的问题~

你遇到的核心问题是:当遍历到链表最后一个节点时,它的Next是null,这时候没法通过比较current.Next.key来判断是否该插入到末尾,还容易触发空指针异常对吧?

咱们来修正你的代码,把末尾插入的情况完美覆盖:

public static void InsertingIntoSortedLinkedList(int value, int key) {
    Node m = new Node();
    m.value = value;
    m.key = key;

    // 情况1:链表为空,直接作为头节点
    if (root == null) {
        m.Next = null;
        root = m;
        return;
    }

    // 情况2:插入到链表头部
    if (key < root.key) {
        m.Next = root;
        root = m;
        return;
    }

    // 情况3:插入到链表中间或末尾
    Node current = root;
    // 循环找插入位置:先确保下一个节点存在,再比较key大小
    while (current.Next != null && current.Next.key < key) {
        current = current.Next;
    }
    // 把新节点挂到current后面,自动适配中间/末尾场景
    m.Next = current.Next;
    current.Next = m;
}

关键细节解释:

  • 循环条件current.Next != null && current.Next.key < key是核心:它先判断下一个节点是否存在(避免空指针),只有当下一个节点的key小于新key时,才继续往后遍历。
  • 循环结束时,要么current.Next是null(说明已经走到链表末尾),要么current.Next.key >= key(找到中间插入点),这时候直接把新节点挂在current后面就搞定了,两种场景都能覆盖!

这样修改后,不管是插入头部、中间还是末尾,代码都能稳定工作啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:06:28