Basis van programmeren (pseudocode traceren)
Een stack wordt voorgesteld door de integer-array st met 5 elementen en de variabele top van het type integer. Alle elementen van st zijn aanvankelijk 0, en top begint bij 0. push(v) telt 1 op bij top en voert dan st[top] ← v uit; pop() geeft de waarde van st[top] terug en trekt dan 1 af van top (de elementen van st veranderen niet). Wat zijn top en st nadat het volgende programma is uitgevoerd?
push(5)
push(8)
pop()
push(3)
push(9)
pop()
push(7)
pop()
- Atop = 2, st = {5, 3, 0, 0, 0}
- Btop = 2, st = {5, 3, 7, 0, 0}
- Ctop = 5, st = {5, 8, 3, 9, 7}
Antwoord en toelichting tonen
Antwoord: B. top = 2, st = {5, 3, 7, 0, 0}
push(5) en push(8) geven st[1] = 5, st[2] = 8 en top = 2, en pop() geeft 8 terug, zodat top = 1 overblijft. push(3) overschrijft st[2] met 3, push(9) zet st[3] = 9, en pop() brengt top terug naar 2. push(7) overschrijft st[3] met 7, en de laatste pop() maakt top = 2. pop() verlaagt alleen top, dus de verwijderde 7 blijft in st[3] staan: st = {5, 3, 7, 0, 0}. De geldige inhoud van de stack is st[1] tot st[top], dus 5 en 3.
Verder: nog 9 vragen over Basis van programmeren (pseudocode traceren)