Hi,
in der Literatur und auch in vielen Implementation von verketteten Listen wird der Weg über eine Indirektionsstufe gegangen: Es werden, so wie man sich es auch vorstellt, explizit Knoten verwendet, d.h. es wird eine interne Knotenstruktur benutzt, die von außen nicht sichtbar ist.
Auch in der Java SE wird soweit ich weiß intern eine node Klasse für die Verwaltung in der LinkedList benutzt.
Rein von der Spezifikation einer verketteten Liste ist das aber nicht notwendig, mein bisheriger Gegenvorschlag war bisher immer, die Struktur wirklich rekursiv aufzubauen: Die Liste selbst enthält das erste Element (falls vorhanden) und verweist auf eine Liste selben Typs als Nachfolger.
Vorteile:
- keine doppelte Implementation der Wörterbuchoperationen, für Liste und Knoten
- keine zweite Klasse im Allgemeinen
- leichtes Abschneiden von ersten Elementen: Rückgabe eine des Listen-Knotens nach den abzuschneidenen Knoten
- Einfügen von Listen in Listen einfach möglich
Nachteile:
- möglicherweise mehr Aufwand zur Verwaltung von Eigenschaften, die die gesamte Liste betreffen (Größe)
Fällt euch noch etwas grundlegendes ein, oder gibt es ein allgemeinere Begründung für die Ablehnung meiner Variante?
in der Literatur und auch in vielen Implementation von verketteten Listen wird der Weg über eine Indirektionsstufe gegangen: Es werden, so wie man sich es auch vorstellt, explizit Knoten verwendet, d.h. es wird eine interne Knotenstruktur benutzt, die von außen nicht sichtbar ist.
Auch in der Java SE wird soweit ich weiß intern eine node Klasse für die Verwaltung in der LinkedList benutzt.
Rein von der Spezifikation einer verketteten Liste ist das aber nicht notwendig, mein bisheriger Gegenvorschlag war bisher immer, die Struktur wirklich rekursiv aufzubauen: Die Liste selbst enthält das erste Element (falls vorhanden) und verweist auf eine Liste selben Typs als Nachfolger.
Vorteile:
- keine doppelte Implementation der Wörterbuchoperationen, für Liste und Knoten
- keine zweite Klasse im Allgemeinen
- leichtes Abschneiden von ersten Elementen: Rückgabe eine des Listen-Knotens nach den abzuschneidenen Knoten
- Einfügen von Listen in Listen einfach möglich
Nachteile:
- möglicherweise mehr Aufwand zur Verwaltung von Eigenschaften, die die gesamte Liste betreffen (Größe)
Fällt euch noch etwas grundlegendes ein, oder gibt es ein allgemeinere Begründung für die Ablehnung meiner Variante?