Grundlagen der Programmierung (Pseudocode nachverfolgen)

Eine Warteschlange verwendet das Zeichenketten-Array q mit 4 Elementen als Ring. head und tail beginnen bei 1. enq(v) führt q[tail] ← v und dann tail ← tail mod 4 + 1 aus; deq() gibt den Wert von q[head] zurück und führt dann head ← head mod 4 + 1 aus. In welchem Element von q wird „E“ gespeichert, wenn das folgende Programm ausgeführt wird?

enq("A")
enq("B")
enq("C")
deq()
deq()
enq("D")
enq("E")
  1. Aq[1]
  2. Bq[3]
  3. Cq[5]
Antwort und Erläuterung anzeigen

Antwort: A. q[1]

mod wird vor + ausgewertet, daher durchläuft tail mit tail ← tail mod 4 + 1 zyklisch 1 → 2 → 3 → 4 → 1. A, B und C kommen in q[1] bis q[3], danach ist tail = 4. Die beiden Aufrufe von deq() entnehmen A und B, und head wird 3. D kommt in q[4], und tail kehrt zu 4 mod 4 + 1 = 1 zurück; E kommt daher in das frei gewordene q[1]. Eine ringförmige Warteschlange (Ringpuffer) verwendet frei gewordene Plätze wieder, statt Elemente nach vorn zu verschieben.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Programmierung (Pseudocode nachverfolgen)

  1. Das folgende Programm gibt eine verkettete Liste aus, deren Elemente über das Array next verbunden sind, indem es ihr ab dem Element mit Index 1 folgt. Die Array-Indizes beginnen bei 1. Der next-Wert 0 markiert das Ende der Liste. Welche Folge von Werten wird ausgegeben?
  2. 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?
  3. Die folgende for-Schleife erhöht ihre Laufvariable jeweils um 5. Welchen Wert hat c nach der Ausführung?
  4. 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?
  5. 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?