Ich implementiere eine abstrakte Klasse und implementiere eine insert
Methode, die in eine sortierte Liste einfügt. Dies ist die rekursive Methode, die ich bisher habe:java - sortierte Liste rekursive Einfügemethode
public void insert(E data) {
Node<E> temp = head;
insert(temp, data);
}
private void insert(Node<E> curr, E data){
Node<E> temp = new Node<E>(data);
if (head == null || data.compareTo(head.data) < 0) {
temp.next = head;
head = temp;
}
else if(curr.data.compareTo(data) < 0 && (curr.next == null || curr.next.data.compareTo(data) > 0)){
temp.next = curr.next;
curr.next = temp;
return;
}
else{
insert(curr.next, data);
}
}
jedoch jederzeit Ich versuche 2+ Elemente in die Liste einfügen, erhalte ich ein Null-Zeiger-Ausnahmefehler. Kann mir jemand meinen Fehler erklären? Dies ist, was passiert, wenn ich versuche, es zu laufen einfach 1 und 2 eingefügt: https://gyazo.com/d254d563675b9d1b0efbce443eda4445
Wie würde ich damit umgehen? – witcheR
Ein einfacher Weg wäre, das else zu starten, wenn with (curr.data! = Null && curr.next! = Null). Die if-Bedingung wird falsch sein, sobald entweder null und fale bis zum letzten else ist. Aber das ist nicht das Hauptproblem. Das Hauptproblem ist der Ansatz, mit dem Sie versuchen, etwas zu managen, das besser mit anderen Mitteln gehandhabt werden kann, z. B. an die Liste anhängen und sie dann zum Beispiel einzigartig machen. –
'else if (curr.data.compareTo (data) <0 && (curr.next == null || curr.next.data.compareTo (data)> 0)' könnte möglicherweise das Problem lösen wie im else-if Blockieren Sie möchten Daten hinzufügen, wenn curr> data> curr.next und curr.next = null bedeutet, dass data das kleinste Element ist – merterpam