Algorithmen & Datenstrukturen
2. Semester Informatik (HSLU)
2. Semester Informatik (HSLU)
-
- 1 / 134
-
Flashcards
Wir müssen sequenziell die richtige Position (B) suchen und ein neues Element einfügen, das Verschieben der restlichen Elemente entfällt hingegen! Der Aufwand ist trotzdem: O(n)
Aufwand für einfach und doppelt verkettete Liste identisch
Wir müssen sequenziell das gewünschte Element suchen und es aus der Liste entfernen. Auch hier ist kein Nachrücken von Elementen notwendig. Aufwand (bedingt durch Suche): O(n)
Aufwand ist für einfach und doppelt verkettet Liste identisch
Listen werden typisch mit mindestens zwei Klassen modelliert. Weshalb?
Eine Klasse repräsentiert die Liste selber
- Enthält die Referenz auf das erste Element (head).
- Hilfsattribute z.B. für Anzahl enthaltene Elemente.
- Methoden für die verschiedenen Operationen
Eine zweite Klasse repräsentiert die Elemente und wird häufig als Knoten, Element oder Node bezeichnet.
- Enthält je nach Listentyp (einfach/doppelt) ein oder zwei Referenzen auf den Vorgänger bzw. den Nachfolger.
- Enthält Attribut(e) für die eigentlichen, enthaltenen Daten
Bei der Implementation mit Java kann das Datenattribut generisch sein und somit für beliebige Typen parametrisiert werden
Konzeptionelles Modell: Einfach verkettete Liste
Da jeder Node (Element) eine Referenz auf den Nachfolger (next) hält, resultiert eine ________ Beziehung auf den selben Typ.
Was ist der Hauptvorteil von Listen gegenüber Arrays?
Der Hauptvorteil von Listen ist, dass sie dynamisch sind:
Sie können eine beliebige Datenmenge aufnehmen, belegen selber aber keinen «festen» Platz, sondern wachsen und schrumpfen mit der Datenmenge mit.
- prädestiniert für (sehr) grosse, stark variierende Datenmengen
Was sind weitere Vorteile einer Liste gegenüber einer Array abgesehen davon, dass Listen dynamisch sind?
- Der Aufwand für das reine Einfügen in eine Liste ist an jeder beliebigen Position (sofern man diese bereits gefunden hat!) konstant (und schnell)
- Listen sind als Datenstrukturen objektorientiert implementiert, unterstützen Generics, und können dank der vorhandenen Interfaces je nach Anwendungsfall in spezifischen Implementationen eingesetzt / ausgetauscht werden
Was ist eine Stack?
Der Stack ist eine Datenstruktur, der die Element als «Stapel» speichert:
- push(E e): Neue Elemente werden immer oben auf den Stapel abgelegt.
- E pop(): Es kann jeweils nur das oberste Element entnommen werden
Was ist die Semantik eines Stacks? (kurz)
LIFO - Last In First Out
Was ist eine Analogie zu einem Stack in Alltag?
Tellerstapel
Wo werden Stack eingesetzt?
- Datenablage bei Funktionsaufrufen
- Umkehren der Reihenfolge