Arrays / Listen Flashcards
(15 cards)
Tafelübung
Arrays
Problemen bei der Verwendung von
Standardarrays
Array zu klein:
Es kann ein Programmfehler auftreten
Array zu groß:
Verschwendung von Speicherplatz
Array vergrößern:
Hat i. d. R. Umkopieren des Speicherinhaltes zur Folge
Feste Itemreihenfolge:
Einfügen und Löschen ist mit viel Aufwand verbunden
Tafelübung
Listen
Sonderfälle!
Mögliche Fälle (je nach Operation):
leere Liste
Einfügen/Löschen/. . .am Anfang der Liste
Einfügen/Löschen/. . . in der Mitte der Liste
Einfügen/Löschen/. . .am Ende der Liste
Tafelübung
Listen
Vorteile
) Verkettete Listen . . .
. . . enthalten nicht mehr Elemente als nötig
. . . können beliebig wachsen
. . . können an beliebiger Stelle Elemente einfügen und löschen
Tafelübung
Schleife über verkettete Liste
for (ListItem i = head; i != null; i = i.next) {
…
}
Tafelübung
Einfügen ans Ende der Liste
for (ListItem i = head; i != null; i = i.next) { if (i.next == null) { i.next = newItem; return; } }
Wichtig IMMER mit return beenden sonst wächst Liste ja immer weiter.
Tafelübung
Einfügen ans Ende der Liste mit TAIL
ListItem newItem = new ListItem(); newItem.value = 4; tail.next = newItem; tail = newItem;
keine Schleife mehr
Tafelübung
Liste leer?
head == null, tail == null
Muss abgefangen werden
Tafelübung
Entfernen aus Liste
Zusätzlicher Zeiger auf vorherigen:
ListItem prev = null; noch abfangen, falls Liste leer ist... for (ListItem i = head; i != null; i = i.next) { if...value stimmt... prev.next = i.next; prev = i; }
KLAUSURAUFGABE SS17
Welche Aussagen bzgl. verketteter Listen sind gültig?
- Der Zugriff auf ein einzelnes Listenelement benötigt unabhängig von der Position des
Listenelements immer O(n); n sei die Anzahl der Elemente in der Liste. - Das Löschen eines Listenelements hat dieselbe Komplexitätsklasse wie das Auffinden
eines Elements. - Die Implementierung eines Stapels (Stack) ist ohne verkettete Listen nicht möglich.
Nur 2.
- Das Löschen eines Listenelements hat dieselbe Komplexitätsklasse wie das Auffinden
eines Elements.
KLAUSURAUFGABE WS17
Welche Aussagen treffen auf unsortierte Listen zu?
In einer unsortierten Liste sind alle Elemente entweder aufsteigend oder
absteigend angeordnet.
Bei der Einbettung in ein Array ist der letzte gespeicherte Wert im Array
der kleinste in der unsortierten Liste gespeicherte Wert.
Die Laufzeitkomplexität bei der Entnahme des Extremwerts beträgt im schlechtesten Fall (worst case) O(log n).
Alle FALSCH
KLAUSURAUFGABE WS16
Welche Aussagen bzgl. verketteter Listen sind gültig?
Der Zugriff auf ein einzelnes Listenelement benötigt unabhängig von der Position des
Listenelements immer On; n sei die Anzahl der Elemente in der Liste.
Das Löschen eines Listenelements hat dieselbe Komplexitätsklasse wie das Auffinden
eines Elements.
Die Implementierung eines Stapels (Stack) ist ohne verkettete Listen nicht möglich.
Nur 2.
Das Löschen eines Listenelements hat dieselbe Komplexitätsklasse wie das Auffinden
eines Elements.
KLAUSURAUFGABE SS15
In einer unsortierten Liste sind alle Elemente entweder aufsteigend oder
absteigend angeordnet.
Bei der Einbettung in ein Array ist der letzte gespeicherte Wert im Array
der kleinste in der unsortierten Liste gespeicherte Wert.
Die Laufzeitkomplexität bei der Entnahme des Extremwerts beträgt im schlechtesten Fall (worst case) O(log n).
Alle FALSCH
Vorlesung
Listen VS Arrays
Speicherbedarf
Listen (einfach):
dynamische Anpassung an die Anzahl der enthaltenen Elemente
immer nur so viel, wie nötig
Overhead: Speicherbedarf für Zeiger
Arrays:
konstanter Speicherbedarf
Speicherplatzverschwendung bei überdimensioniertem Feld
Vorlesung
Listen VS Arrays
Elemente suchen
Listen (einfach):
lineare Suche O(n)
Arrays:
binäre Suche (falls aufsteigend sortiert) O(logn)
Vorlesung
Listen VS Arrays
Zugriff auf Element
Liste (einfach):
Liste vom Anfang bis zur gesuchten
Position durchlaufen
Arrays:
direkter Zugriff