Basis van programmeren (pseudocode traceren)
Een wachtrij gebruikt de array q (4 elementen van het type string) als ring. head en tail beginnen bij 1. enq(v) voert q[tail] ← v uit en daarna tail ← tail mod 4 + 1; deq() geeft de waarde van q[head] terug en voert daarna head ← head mod 4 + 1 uit. In welk element van q wordt „E” opgeslagen als het volgende programma wordt uitgevoerd?
enq("A")
enq("B")
enq("C")
deq()
deq()
enq("D")
enq("E")
- Aq[1]
- Bq[3]
- Cq[5]
Antwoord en toelichting tonen
Antwoord: A. q[1]
mod wordt vóór + geëvalueerd, dus tail ← tail mod 4 + 1 laat tail rondgaan langs 1 → 2 → 3 → 4 → 1. A, B en C komen in q[1] tot q[3], waarna tail = 4. De twee deq()-aanroepen halen A en B eruit, zodat head = 3. D komt in q[4] en tail keert terug naar 4 mod 4 + 1 = 1, dus E komt in de vrijgekomen q[1]. Een ringvormige wachtrij (ringbuffer) hergebruikt vrijgekomen plaatsen in plaats van elementen naar voren te schuiven.
Verder: nog 9 vragen over Basis van programmeren (pseudocode traceren)