I
itse
Gast
Hallo,
ich möchte eine Warteschlange als einfach verkette Liste erzeugen. Soweit funktioniert auch das Erzeugen, mit den einzelnen Personen in der Warteschlange, und das jede Person weiß,wer ihr Nachfolger (next) ist.
Nun möchte ich eine Person innerhalb der Warteschlange löschen, also die Person mit ihrem Nachfolger überschreiben, dazu habe ich folgendes programmiert:
Es wird immer von der ersten Person in der Warteschlange ausgegangen.
Das Löschen der ersten Person funktioniert auch einwandfrei, diese wird mit ihrem Nachfolger überschrieben.
Jedoch kann ich keine Person innerhalb der Warteschlange und am Ende löschen.
Es funktioniert, dass die Person innerhalb der Warteschlange samt ihrem Nachfolger gesucht wird. Auch die Person am Ende wird richtig erkannt und das die nächste Person nicht existiert.
Aber die gesuchte (zu ersetzende Person) wird nicht ihrem Nachfolger bzw. mit Null überschrieben.
Was mache ich da falsch? Das Ersetzen der Person müsste doch genauso wie bei der Ersten funktionieren?
Besten Dank
Michi
ich möchte eine Warteschlange als einfach verkette Liste erzeugen. Soweit funktioniert auch das Erzeugen, mit den einzelnen Personen in der Warteschlange, und das jede Person weiß,wer ihr Nachfolger (next) ist.
Nun möchte ich eine Person innerhalb der Warteschlange löschen, also die Person mit ihrem Nachfolger überschreiben, dazu habe ich folgendes programmiert:
Java:
public boolean remove(String name) {
//Liste leer
if (this.first == null) {
return false;
}
//Das erste Element der Liste löschen
else if (this.first.getName() == name) {
this.first = this.first.getNext();
return true;
} else
//Ein Element innerhalb der Liste löschen
{
Person search = this.first;
//Anhand des Namens das entsprechende Element in der Liste suchen
while (search.getName() != name) {
search = search.getNext();
}
//Dann wird der Nachfolger, des gesuchten ermittelt
Person naechster = search.getNext();
//Wenn der Nachfolger nicht existiert
//Dann ist das gesuchte Elemente das Letzte in der Liste
//und soll gelöscht werden
if(naechster == null){
search = null;
return true;
//Wenn der Nachfolgder existiert
//Dann soll das gesuchte Element aus der Liste gelöscht werden
//also mit dem Nachfolger überschrieben werden
}else if(naechster != null){
search = naechster;
return true;
}else
return false;
}
}
Es wird immer von der ersten Person in der Warteschlange ausgegangen.
Das Löschen der ersten Person funktioniert auch einwandfrei, diese wird mit ihrem Nachfolger überschrieben.
Jedoch kann ich keine Person innerhalb der Warteschlange und am Ende löschen.
Es funktioniert, dass die Person innerhalb der Warteschlange samt ihrem Nachfolger gesucht wird. Auch die Person am Ende wird richtig erkannt und das die nächste Person nicht existiert.
Aber die gesuchte (zu ersetzende Person) wird nicht ihrem Nachfolger bzw. mit Null überschrieben.
Was mache ich da falsch? Das Ersetzen der Person müsste doch genauso wie bei der Ersten funktionieren?
Besten Dank
Michi