Frage: Welche Operationen ändern die Länge?Warum? append und insertAt verlängern, delete verkürzt.
Hilfe: Zwei append, ein insertAt, ein delete.
A6
Einen Stapel umdrehen
AFB II
Der Inhalt eines Stapels s soll in umgekehrter Reihenfolge in s stehen. Dazu gibt es zwei Hilfsstapel h1 und h2. Stelle die Schritte in der richtigen Reihenfolge dar.
Ziehe die Karten in die richtige Reihenfolge — mit der Tastatur: ↑/↓ verschiebt, Shift+↑/↓ wechselt nur den Fokus.
1h1 ← erzeuge Stack(), h2 ← erzeuge Stack()
2solange s nicht leer: h1.push(s.pop())
3solange h1 nicht leer: h2.push(h1.pop())
4solange h2 nicht leer: s.push(h2.pop())
Jedes Umschichten dreht die Reihenfolge um — dreimal umschichten ergibt insgesamt eine Umkehrung.
Frage: Wie oft muss man umschichten, damit die Reihenfolge am Ende umgedreht in s steht?Warum? Jedes Umschichten dreht die Reihenfolge um.
Hilfe: Erst anlegen, dann s → h1 → h2 → s.
A7
Schlange mit Rücklauf
AFB II
Eine leere Schlange q: enqueue(3), enqueue(8), enqueue(5), dann zweimal: x ← q.dequeue(), q.enqueue(x · 2). Ermittle die Werte.
Arbeite die Kette Schritt für Schritt ab: Erst wenn ein Schritt stimmt, wird der nächste freigeschaltet. Enter prüft.
Frage: Welches Element kommt beim ersten dequeue heraus?Warum? FIFO: das zuerst eingefügte.
Hilfe: Nach zwei Runden sind 3 und 8 als 6 und 16 hinten angekommen.
A8
Operation und Wirkung
AFB II
Erläutere die Operationen, indem du jede mit ihrer Wirkung verbindest.
Klicke links einen Eintrag an und dann rechts den passenden — es entsteht eine Verbindungslinie. Mit der Tastatur: Enter zum Auswählen, ↑/↓ zum Wandern.
Frage: Welche Operationen verändern die Struktur?Warum? Nur entnehmende und einfügende.
Hilfe: top liest, pop entnimmt.
A9
Alle Nullen löschen
AFB II
Kim will alle Nullen aus einer DynArray d entfernen. Überprüfe ihre Implementierung und markiere die fehlerhaften Zeilen.
In diesem Text stecken Fehler. Klicke genau die falschen Zeilen an — die richtigen musst du stehen lassen.
Test: [0, 0, 5] — mit Kims Code bleibt eine 0 stehen, weil i nach dem ersten Löschen auf 1 springt.
Frage: Welcher Index ist der letzte gültige?Warum? getLength() − 1.
Hilfe: Was steht nach delete(i) an Position i?
A10
Wie teuer ist das?
AFB III
Schätze ab, wie viele Elemente bei einer DynArray mit 1000 Elementen verschoben werden müssen.
Wähle für jede Zeile eine Stufe: 1 = keins, 2 = etwa 1, 3 = etwa 500, 4 = etwa 999, 5 = etwa 1000. Mit der Tastatur: Tab zur Zeile, ←/→ zwischen den Stufen, Enter setzt.
1 = keins5 = etwa 1000
append(x)
delete(999)
insertAt(0, x)
delete(0)
insertAt(500, x)
Einfügen und Löschen vorne sind teuer, weil alle anderen Elemente wandern. Deshalb eignet sich eine Schlange besser, wenn ständig vorne entnommen wird.
Frage: Welche Elemente liegen hinter der Position, an der eingefügt oder gelöscht wird?Warum? Nur diese werden verschoben.
Hilfe: Vorne einfügen verschiebt alle 1000, vorne löschen 999.