Basis van programmeren (pseudocode traceren)
Het volgende programma voegt „F”, in val[6], direct na „C” (index 3) in de gelinkte lijst A → C → E → D → B in, waarvan de elementen met de array next aan elkaar zijn gekoppeld, en drukt daarna de lijst af vanaf het element met index 1. Array-indexen beginnen bij 1. Een next-waarde van 0 markeert het einde van de lijst. Wat moet er op de plaats van 【a】 staan, zodat de uitvoer A, C, F, E, D, B is?
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
- Anext[3] ← 6, daarna next[6] ← next[3]
- Bnext[6] ← 3, daarna next[3] ← next[6]
- Cnext[6] ← next[3], daarna next[3] ← 6
Antwoord en toelichting tonen
Antwoord: C. next[6] ← next[3], daarna next[3] ← 6
Om in te voegen, laat je eerst het nieuwe element F wijzen naar E, waarnaar C wees (next[3] = 5), en pas daarna C naar F. next[6] ← next[3] geeft next[6] = 5, en de volgende next[3] ← 6 koppelt C → F → E. In de omgekeerde volgorde wordt next[6] ← next[3] uitgevoerd nadat next[3] al 6 is geworden, dus next[6] = 6: F wijst naar zichzelf en de uitvoer C, F, F, … eindigt nooit. Bij het omzetten van koppelingen in een gelinkte lijst ken je toe in een volgorde waarbij de weg naar de volgende elementen nooit verloren gaat.
Verder: nog 9 vragen over Basis van programmeren (pseudocode traceren)