Hallo,
ich habe eine Doppelt verkettete Liste erstellt, die soweit auch funktioniert mit den Methoden
insertFirst(o) - Fügt ein Objekt direkt hinter dem Head der Kette ein
insertLast(o) - Fügt ein Objekt direkt vor dem tail der Kette ein
toString() - Gibt mir die Komplette Kette von Head bis Tail aus
Jetzt habe ich die Methode remove(Object), welche die Kette von vorne nach hinten durchsucht und das gewünschte Objekt entfernt (nur das, welches zuerst auftaucht).
Die Methode funktioniert auch, solange ich nicht ein Objekt doppelt in der Liste habe und die remove() Methode zweimal aufrufe.
D.h. ich habe eine Liste mit
[123123]
Rufe ich jetzt liste.remove(3) auf erhalte ich:
[12123]
Dann beim zweiten mal liste.remove(3) sollte dementsprechend
[1212] rauskommen, stattdessen bekomme ich den Laufzeitfehler:
"Exception in thread "main" java.lang.NullPointerException"
Der Fehler liegt nicht in der while-Schleife, welche die Liste absucht, wenn ich das
if(found){...} auskommentiere funktioniert das Ganze.
Hier die remove-Methode:
(Die Listenelemente haben jeweils ein Object als Bezeichner und einen previous und einen next Verweis, und die entsprechenden getter und setter Methoden.
Ich komme kein Stück weiter, über einen Tipp wäre ich Froh,
Danke
ich habe eine Doppelt verkettete Liste erstellt, die soweit auch funktioniert mit den Methoden
insertFirst(o) - Fügt ein Objekt direkt hinter dem Head der Kette ein
insertLast(o) - Fügt ein Objekt direkt vor dem tail der Kette ein
toString() - Gibt mir die Komplette Kette von Head bis Tail aus
Jetzt habe ich die Methode remove(Object), welche die Kette von vorne nach hinten durchsucht und das gewünschte Objekt entfernt (nur das, welches zuerst auftaucht).
Die Methode funktioniert auch, solange ich nicht ein Objekt doppelt in der Liste habe und die remove() Methode zweimal aufrufe.
D.h. ich habe eine Liste mit
[123123]
Rufe ich jetzt liste.remove(3) auf erhalte ich:
[12123]
Dann beim zweiten mal liste.remove(3) sollte dementsprechend
[1212] rauskommen, stattdessen bekomme ich den Laufzeitfehler:
"Exception in thread "main" java.lang.NullPointerException"
Der Fehler liegt nicht in der while-Schleife, welche die Liste absucht, wenn ich das
if(found){...} auskommentiere funktioniert das Ganze.
Hier die remove-Methode:
(Die Listenelemente haben jeweils ein Object als Bezeichner und einen previous und einen next Verweis, und die entsprechenden getter und setter Methoden.
Ich komme kein Stück weiter, über einen Tipp wäre ich Froh,
Danke
Java:
public void remove(Object a){
boolean found = false;
actual = head;
while(actual!=null){
if(actual.getObject().equals(a)){
found=true;
break;
}
actual=actual.getNext();
}
if(found){
actual.getPrevious().setNext(actual.getNext());
actual.getNext().setPrevious(actual.getPrevious());
}
}