Wie lösche ich ein Element in einer einer einfach verketteten Liste?
Man muss ja bei einer Liste einfach den Zeiger ändern und den Nachfolger löschen bin mir jedoch beim Algorithmus nicht sicher
Es wäre von Vorteil auch die Programmiersprache zu erwähnen.
Danke für den Tipp, werde darauf versuchen zu achten.
Mein Problem war leider beim Algorithmus daher habe ich es ausgelassen, tut mir leid
3 Antworten
Element suchen.
Vorgänger gemerkt haben.
Nachfolger merken.
Beim Vorgänger den Nachfolger als neuen Nachfolger eintragen.
Zu wenig info wie das genau bei dir aussieht.
Für die genaue Syntax müsste man die Definition der Schülerliste kennen.
Das ist nur ein bsp. Benötigte nur den Algorithmus der immer geht unabhängig von der schülerliste
Oh es tut mir leid, ich dachte Algorithmus wäre bereits in Programmierungssprache.
Entschuldigung und vielen Dank :)
Leider habe ich Schwierigkeiten, dass in Form eines Algorithmuses zu schreiben in meinem Programm ...
Bspw. Ich möchte eine Schülerliste erstellen bzw. Ein Element darin löschen :
If (meineSchülerliste.tolast())
{system.out.println(meineSchülerliste.getContent();
}
if (this.isEmpty ()){
meineSchülerliste.hasAccess()==True;
}
meineSchülerliste.Remote;
- Iteriere über die Liste, wobei du dir im i-ten Schleifendurchlauf auch das (i-1)-te Element noch gemerkt haben musst (überlege dir, wie du verfahren musst, wenn das zu löschende Element das allererste ist) und stoppe sobald du das Element gefunden hast, das gelöscht werden soll.
- Gefunden: Bezeichnen wir mit e := L[i] das gefundene Element an Stelle i, das gelöscht werden soll und mit d := L[i-1] den gemerkten Vorgänger.
- Setze d.Nachfolger := e.Nachfolger.
- Fertig.
Das Aufwändigste ist tatsächlich, die beiden wichtigen Elemente zu finden. Dann ist es nur noch eine Setzung.
Diese Schreibweise kenne ich leider nicht nur solche :
If (meineSchülerliste.tolast())
{system.out.println(meineSchülerliste.getContent();
}
if (this.isEmpty ()){
meineSchülerliste.hasAccess()==True;
}
meineSchülerliste.Remote;
Das ist auch keine Schreibweise, sondern eine Erklärung des Algorithmus. Ihn implementieren musst du schon selbst.
Mir würde eine richtige Erklärung des Algorithmus reichen, so würde ich das verstehen und nachvollziehen können.
vielen vielen Dank für deine Hilfe :)
Was fehlt dir denn zu einer richtigen Erklärung? Was verstehst du nicht?
Ich weiß leider nicht wie ich das umsetzten soll, ich weiß zwar das Prinzip dahinter ich kann das aber nicht als Algorithmus im Java Programm eingeben
[ e(x-1) ] ----> [ e(x) ] -----> [ e(x+1) ]
[ e(x-1) ] --------------------> [ e(x+1) ]
del([ e(x) ])
Oder auch:
last.next=this.next
del(this)
Eigentlich recht überschaubar.
Diese Schreibweise kenne ich leider nicht nur solche :
If (meineSchülerliste.tolast())
{system.out.println(meineSchülerliste.getContent();
}
if (this.isEmpty ()){
meineSchülerliste.hasAccess()==True;
}
meineSchülerliste.Remove;
Ich weiß leider nicht wie ich das umsetzten soll, ich weiß zwar das Prinzip dahinter ich kann das aber nicht als Algorithmus im Java Programm eingeben
Die hier :)