Liste

Aus KGS-Wiki
Version vom 6. Mai 2025, 22:20 Uhr von Sn (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Eine Liste ist eine Datenstruktur, die mehrere Daten enthält, die fortlaufend durchnummeriert sind.

Motivation

Oft kommt es vor, dass man zwar mehrere Daten speichern muss, aber zum Zeitpunkt der Programmierung noch nicht weiß, wie viele genau. Nehmen wir an, ich wollte eine Schulklasse mit einem Programm modellieren. Dann könnte ich für jedes Schüly eine eigene Variable anlegen:

schuely1 = "Babbage, Charles"
schuely2 = "Hopper, Grace"
schuely3 = "Turing, Alan"
schuely4 = "Lovelace, Ada"
# ...

Hieraus ergeben sich eine Reihe von Problemen:

  1. Wie viele dieser Variablen soll ich anlegen?
    • Wenn ich 30 Variablen anlege und nur 24 Schülys in der Klasse sind, was mache ich dann mit den sechs überzähligen Variablen?
    • Oder umgekehrt: wenn ich plötzlich ein 31. Schüly in die Klasse gesteckt kriege, was dann?
  2. Wie kann ich diese Variablen alle systematisch bearbeiten? Sie sind ja nicht zu einer Datenstruktur zusammengefasst.

Eine mögliche Lösung ist, die Daten zu einer nummerierten Liste zusammenzufassen. Diese Liste kann ich in ihrer Länge an meinen Bedarf anpassen und mithilfe von Kontrollstrukturen wie der Wiederholung mit Laufvariable kann ich die Daten auch systematisch bearbeiten.

Implementierung

Dabei gibt es verschiedene Möglichkeiten, Listen zu implementieren. Jede davon hat ihre Vor- und Nachteile, die in den einzelnen Artikeln näher erörtert werden. In der Praxis werden darum häufig Misch-Implementierungen eingesetzt, die versuchen, diese Vor- und Nachteile auszugleichen.

Arten von Listen
Art Vorteile Nachteile
Array sehr schneller Zugriff fixierte Länge
Verkettete Liste langsamer Zugriff flexible Länge
Hash-Tabelle schneller Zugriff bei wenigen Daten langsamer Zugriff bei vielen Daten

Programmierung

Visuelle Programmierung

In Scratch gibt es eine Block-Kategorie Listen. Listen können wie Variablen angelegt werden und sind dann ebenfalls über runde Blöcke abrufbar. Sobald man eine Liste angelegt hat, erscheinen die Blöcke mit den dazugehörigen Operationen wie füge () zu [Liste v] hinzu, lösche () aus [Liste v], (Länge von [Liste v]) oder (Element () von [Liste v]). Diese Blöcke sind dunkelorange.

Im AppInventor gibt es ebenfalls Blöcke für Listenoperationen. Diese Blöcke sind hellblau.

Textuelle Programmierung

In sehr vielen Programmiersprachen werden eckige Klammern [] genutzt, um Listen und Listenelemente zu kennzeichnen. Der Zugriff auf das Element, das in der Liste liste an Position 0 steht, wird häufig so geschrieben: liste[0]. Dies ist z.B. in Python, Java, JavaScript, Lua und vielen anderen Sprachen so.

👉
Hinweis

In den meisten Sprachen werden die Positionen der Listeneinträge nicht von 1 an aufwärts gezählt, sondern von 0!

Damit enden die Gemeinsamkeiten, denn ansonsten unterscheiden sich die Sprachen in vieler Hinsicht: Die Länge einer Liste l fragt man in Python mit len(l) ab, in Java mit l.length oder mit l.size(), je nachdem, welche Art von Liste man implementiert hat.

Zum Weiterlesen