有序链表插入问题求助:新手代码末尾元素处理异常
解决有序链表末尾元素插入问题
嘿,刚入门编程碰到链表的坑太正常了,别着急!我来帮你搞定这个末尾插入的问题~
你遇到的核心问题是:当遍历到链表最后一个节点时,它的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
相关产品推荐
相关产品推荐

