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")
- Aq[1]
- Bq[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.
Weiter: 9 weitere Fragen zu Grundlagen der Programmierung (Pseudocode nachverfolgen)