Ich versuche, mehrere Knoten zu löschen, die ein Kriterium aus einer verknüpften Liste erfüllt. Das Programm ist ein bisschen komplex, also werde ich den Kern davon bestimmen. Die Knoten in meiner verknüpften Liste hat die folgenden Eigenschaften (einen Namen mit einer Nummer zugeordnet):Löschen Sie mehrere Knoten aus der verknüpften Liste Java
Name Number
Dog 1
Cat 1
Rat 2
Donkey 3
Fish 1
Ich möchte die Knoten mit der Nummer 1. Meine Löschfunktion löschen können:
public void Delete(Int N) {
Node current = Head;
Node previous = Head;
while (current.getNum() != N) {
if (current.getNextNode() == null) {
System.out.print("Not found");
} else {
previous = current;
current = current.getNextNode();
}
}
if (current == Head) {
Head = Head.getNextNode();
} else {
Node A = current.getNextNode();
previous.setNextNode(A);
}
}
Dies funktioniert, aber es entfernt nur das erste Vorkommen. Ich weiß, dass es an der fehlenden oder geeigneten Schleifenstruktur liegen könnte, aber ich arbeite seit Stunden daran und bin auf dem Weg verwirrt. Ich habe versucht, eine Trace-Tabelle manuell zu machen, aber das funktioniert auch nicht.
Wie kann die Funktion bearbeitet werden, so dass sie die gesamten verknüpften Listen durchläuft und die Knoten entfernt, die den Kriterien entsprechen?