我创建了一个方法来将链接列表节点插入排序(增加)链表的正确位置,但我遇到了一些问题.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
Exception in thread "main" java.lang.NullPointerException
at LinkedLists.LinkedListProblems.sortedInsert(LinkedListProblems.java:188)
Run Code Online (Sandbox Code Playgroud)
该curr.next != null部分在intellij中突出显示,所以我假设这是导致错误.仅当我添加的值大于已排序链接列表的最后一个值时,才会出现此错误
但是,当迭代到链表的最后一个节点并且该节点的值仍然小于参数的值时.不应该退出while循环吗?
我认为问题出在这里
while (curr.next.data < value && curr.next != null) {
curr = curr.next;
}
Run Code Online (Sandbox Code Playgroud)
您正在以错误的顺序进行测试,首先检查null-
while (curr.next != null && curr.next.data < value) {
curr = curr.next;
}
Run Code Online (Sandbox Code Playgroud)
否则,当curr.next是null将已经测试curr.next.data < value,这将抛出一个NullPointerException.
| 归档时间: |
|
| 查看次数: |
1436 次 |
| 最近记录: |