Zum Inhalt springen

Informatik · Klasse 6–12 · aktualisiert

Verkettete Listen: Aufbau und Laufzeiten

Lerne den Aufbau verketteter Listen, ändere ihre Verweise und vergleiche ihren Aufwand mit dem eines Arrays.

0 von 9 Aufgaben gelöst

Verkettete Listen: Aufbau und Laufzeiten

Kurz gesagt

Verkettete Listen bestehen aus Knoten, also Speicherstücken mit Werten. Verweise zeigen auf andere Knoten. Bei bekannten nötigen Knoten brauchen Einfügen und Löschen eine von der Listenlänge unabhängige Schrittzahl; eine Suche kann die ganze Liste durchlaufen.

Du möchtest eine Folge von Werten speichern und verändern. Dafür kannst du einzelne Knoten zu einer Liste verbinden. Du untersuchst, welche Verbindungen sich ändern und wie viele Arbeitsschritte nötig sind. Alle Zahlenfolgen und Anwendungssituationen auf dieser Seite sind erfunden.

Deine Lernziele

Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Termi das Ziel für dich ab.

4 Abschnitte

Ein Knoten ist ein einzelnes Speicherstück. Er enthält einen Wert, etwa eine Zahl, und gespeicherte Verweise. Ein Verweis, auch Zeiger genannt, zeigt auf einen anderen Knoten. Die Reihenfolge der Liste entsteht durch diese Verbindungen. Die Knoten müssen deshalb nicht auf benachbarten Speicherplätzen liegen.

Wir betrachten hier Listen mit Anfang und Ende, ohne Kreisverbindungen und ohne zusätzliche Hilfsknoten. Der besondere Verweiswert „NULL“ bedeutet: Hier wird auf keinen Knoten verwiesen. NULL ist kein zusätzlicher Knoten.

In einer einfach verketteten Liste enthält jeder Knoten einen Nachfolger-Verweis. Er zeigt auf den nächsten Knoten. Beim letzten Knoten hat dieser Verweis den Wert NULL. Von einem Knoten aus gibt es keinen eigenen Verweis zurück zu seinem Vorgänger.

In einer doppelt verketteten Liste enthält jeder Knoten zwei Verweise: einen zum Nachfolger und einen zum Vorgänger. Der Vorgänger-Verweis des ersten Knotens und der Nachfolger-Verweis des letzten Knotens haben den Wert NULL. So kannst du die Liste vorwärts und rückwärts durchlaufen. Der zweite Verweis braucht zusätzlichen Speicher in jedem Knoten.

Zur Verwaltung gehören gespeicherte Angaben über die ganze Liste. Dazu gehört der Startverweis auf den ersten Knoten. Er liegt außerhalb der einzelnen Knoten. Auch bei einer leeren Liste bleibt der Startverweis gespeichert; sein Wert ist dann NULL. Zusätzlich können ein Endverweis auf den letzten Knoten und die Anzahl der Knoten gespeichert werden.

Definition

Verkettete Liste

Eine Folge von Knoten, deren Reihenfolge durch Verweise festgelegt ist. Einfach verkettete Knoten haben einen Nachfolger-Verweis, doppelt verkettete zusätzlich einen Vorgänger-Verweis.

Beispiel: Erfundene Liste mit drei Zahlen

  1. 1Die Schreibweise 14 → 22 → 37 → NULL zeigt die Nachfolger-Verweise zwischen den Knoten mit diesen Werten.
  2. 2Der Startverweis zeigt auf den Knoten mit 14. Der Knoten mit 37 hat keinen Nachfolger.
  3. 3Bei doppelter Verkettung zeigt zusätzlich 37 zurück auf 22 und 22 zurück auf 14.
  4. 4Der Vorgänger-Verweis von 14 hat dann den Wert NULL.

Teste dich

LeichtWelche Verbindung führt von jedem Knoten mit Vorgänger direkt zu seinem Vorgänger?

Alles auf einen Blick

Liste (Datenstruktur)

  • Aufbau

    Einfach verkettete Knoten haben einen Nachfolger-Verweis, doppelt verkettete zusätzlich einen Vorgänger-Verweis.

  • Ändern

    Beim Einfügen und Löschen werden Verbindungen angepasst. Die übrigen Knoten behalten ihren Speicherplatz.

  • Verwaltung

    Start, ein gespeichertes Ende und eine gespeicherte Anzahl müssen nach jeder Änderung stimmen.

  • Aufwand

    Lokales Ändern braucht bei bekannten nötigen Knoten O(1). Eine vorher nötige Suche kann insgesamt O(n) verursachen, bei n Knoten.

  • Auswahl

    Arrays erlauben direkten Zugriff über gültige Indizes. Verkettete Listen können bei bekannten Einfügestellen Verschiebungen vermeiden.

Musteraufgabe · Schritt für Schritt

Erfundenes Beispiel: Den letzten Knoten einer doppelt verketteten Liste entfernen

  1. 1Die Nachfolger-Reihe lautet 12 → 31 → 46 → NULL. Der Start zeigt auf 12, das gespeicherte Ende auf 46. Die gespeicherte Anzahl ist 3.
  2. 2Der zu entfernende Knoten mit 46 ist direkt bekannt. Sein Vorgänger-Verweis führt zum Knoten mit 31.
  3. 3Setze den Nachfolger-Verweis von 31 auf NULL. Damit ist 31 der neue letzte Knoten.
  4. 4Setze den gespeicherten Endverweis auf 31 und vermindere die Anzahl von 3 auf 2.
  5. 5Der Knoten mit 46 gehört nun nicht mehr zur Liste. Der Start bleibt bei 12; die übrigen Knoten behalten ihren Speicherplatz.
  6. 6Die nötigen Verweise waren bekannt. Die Änderung braucht im betrachteten Modell O(1).

Fehler finden

Prüfe das Entfernen aus einer erfundenen einfach verketteten Liste In einer Zeile steckt ein Fehler. Tippe sie an.

Lückentext

Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.

Beim Vorwärtsgehen in einer einfach verketteten Liste führt ein Verweis zum . In einer doppelt verketteten Liste ist ein zu löschender innerer Knoten direkt bekannt. Seine Nachbarn erreichst du über seine Verweise. Das Anpassen der Verbindungen braucht deshalb eine Schrittzahl. In einem Array beginnt der Index bei 0; der Index 2 bezeichnet den Platz.

Karteikasten

Erst selbst überlegen, dann umdrehen.

Übung mit Feedback

Abschluss-Check: Liste (Datenstruktur)

LeichtWelche Beschreibung passt zu einer leeren Liste in unserem Modell?
MittelIn einer einfach verketteten Liste folgt auf 26 direkt 59. Du fügst einen neuen Knoten mit 42 direkt nach 26 ein. Welche Reihenfolge entsteht?
SchwerIn einem erfundenen Bauplan wird häufig direkt vor einem bekannten inneren Knoten eingefügt. Der Knoten hat beide Nachbarn. Zugriffe über Indizes sind selten. Ein Vergleichsarray ist vorn lückenlos belegt und hat freien Platz am Ende. Welche Begründung stimmt?

Weiterlesen in Informatik