尝试插入排序链接列表



我正在尝试将随机整数插入从最小到最大的链接列表中。每次我运行此方法时,都会开始分类和打印,但最终会给我一个NullPoInterException吗?任何帮助都将不胜感激。

public void insertInOrder(int x) {
    if (head == null) {
        head = new Node(x);
    } else {
        Node prev;
        Node curr;
        for (prev = null, curr = head;
            (curr != null) && (x > curr.getNumber()); 
            prev = curr, curr = curr.getNext()) {}
        if (prev == null) {
            insertAtHead(x);
        }
        if (curr == null) {
            insertAtTail(x);
        } else {
            Node nNex = new Node(x);
            nNex.setNext(curr);
            prev.setNext(nNex); // NullPointerException is raised here
        }
    }
}

这就是您拥有的

if (prev == null) {
    insertAtHead(x);
}
if (curr == null) {
    insertAtTail(x);
} else {
    Node nNex = new Node(x);
    nNex.setNext(curr);
    prev.setNext(nNex);
}

您检查上述是否为null,是否在第一个if语句中进行,但是如果您输入ELSE语句prev仍然为null。您应该这样做:

if (prev == null) {
    insertAtHead(x);
}
else if (curr == null) {
    insertAtTail(x);
} else {
    Node nNex = new Node(x);
    nNex.setNext(curr);
    prev.setNext(nNex);
}

最新更新