【发布时间】:2014-07-29 05:18:05
【问题描述】:
我创建了一个方法来在排序(递增)链表的正确位置插入一个链表节点,但我遇到了一些问题。
public static void sortedInsert(LinkedListNode root, int value) {
LinkedListNode newNode = new LinkedListNode(value);
if (root == null || root.data >= value) {
newNode.next = root;
} else {
LinkedListNode curr = root;
while (curr.next.data < value && curr.next != null) {
curr = curr.next;
}
newNode.next = curr.next;
curr.next = newNode;
}
}
错误:
Exception in thread "main" java.lang.NullPointerException
at LinkedLists.LinkedListProblems.sortedInsert(LinkedListProblems.java:188)
curr.next != null 部分在 intellij 中突出显示,因此我假设这是导致错误的原因。只有当我添加的值大于排序链表的最后一个值时才会出现此错误
但是当迭代到链表的最后一个节点并且该节点的值仍然小于参数的值时。那不应该退出while循环吗?
【问题讨论】:
-
您的
while-loop条件不应该颠倒吗?while (curr.next != null && ...)这样当它是null时,您不会尝试检查它的数据....这会导致 NPE?
标签: java linked-list