Grundlagen der Programmierung (Pseudocode nachverfolgen)

Das folgende Programm fügt „F“ aus val[6] direkt hinter „C“ (Index 3) in die verkettete Liste A → C → E → D → B ein, die über das Array next verbunden ist, und gibt die Liste dann ab dem Element mit Index 1 aus. Die Array-Indizes beginnen bei 1. Der next-Wert 0 markiert das Ende der Liste. Was gehört an die Stelle von 【a】, damit die Ausgabe A, C, F, E, D, B lautet?

string array: val ← {"A", "B", "C", "D", "E", "F"}
integer array: next ← {3, 0, 5, 2, 4, 0}
【a】
integer: p ← 1
while (p ≠ 0)
  output val[p]
  p ← next[p]
endwhile
  1. Anext[3] ← 6, danach next[6] ← next[3]
  2. Bnext[6] ← 3, danach next[3] ← next[6]
  3. Cnext[6] ← next[3], danach next[3] ← 6
Antwort und Erläuterung anzeigen

Antwort: C. next[6] ← next[3], danach next[3] ← 6

Beim Einfügen wird zuerst das neue Element F auf E verwiesen, auf das C bisher verwies (next[3] = 5), und erst dann C auf F. next[6] ← next[3] ergibt next[6] = 5, und das folgende next[3] ← 6 verbindet C → F → E. In umgekehrter Reihenfolge läuft next[6] ← next[3] erst, nachdem next[3] bereits 6 ist, also gilt next[6] = 6: F verweist auf sich selbst, und die Ausgabe C, F, F, … endet nie. Beim Umhängen einer verketteten Liste wird in einer Reihenfolge zugewiesen, bei der der Weg zu den nachfolgenden Elementen nie verloren geht.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Programmierung (Pseudocode nachverfolgen)

  1. Die folgende for-Schleife erhöht ihre Laufvariable jeweils um 5. Welchen Wert hat c nach der Ausführung?
  2. Im folgenden Programm wertet and seine rechte Seite nicht aus, wenn die linke Seite false ist (Kurzschlussauswertung). cnt ist eine globale Variable. Welchen Wert hat cnt nach der Ausführung des Programms?
  3. Das folgende Programm sucht im Array a mit n Elementen den Wert x und speichert den Index, an dem er gefunden wird, in i. Die Array-Indizes beginnen bei 1. and und or werten ihre rechte Seite nicht aus, wenn die linke Seite allein das Ergebnis festlegt. Welche Bedingung an der Stelle von 【a】 liest a[n + 1] außerhalb des Arrays, wenn x nicht in a enthalten ist?
  4. Reelle Werte werden im Format IEEE 754 mit doppelter Genauigkeit (binary64) dargestellt, und jede Summe wird auf den nächstgelegenen darstellbaren Wert gerundet. Welchen Wert hat c, nachdem das folgende Programm ausgeführt wurde?
  5. Die Klasse Counter gibt jeder Instanz eine eigene ganzzahlige Membervariable count (beim Erzeugen 0), und ihre Methode inc() addiert 1 zum eigenen count. Welchen Wert hat x, nachdem das folgende Programm ausgeführt wurde?