Bases de la programmation (trace de pseudo-code)
Une pile est représentée par le tableau d'entiers st de 5 éléments et la variable entière top. Tous les éléments de st valent 0 au départ, et top vaut 0. push(v) ajoute 1 à top puis exécute st[top] ← v ; pop() renvoie la valeur de st[top] puis soustrait 1 de top (les éléments de st ne sont pas modifiés). Quelles sont les valeurs de top et st après l'exécution du programme suivant ?
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}
Afficher la réponse et l'explication
Réponse : B. top = 2, st = {5, 3, 7, 0, 0}
push(5) et push(8) donnent st[1] = 5, st[2] = 8 et top = 2, puis pop() renvoie 8 et laisse top = 1. push(3) écrase st[2] avec 3, push(9) donne st[3] = 9, et pop() ramène top à 2. push(7) écrase st[3] avec 7, et le dernier pop() donne top = 2. pop() se contente de diminuer top : le 7 retiré reste donc dans st[3], et st = {5, 3, 7, 0, 0}. Le contenu valide de la pile est st[1] à st[top], c'est-à-dire 5 et 3.
Continuer : 9 autres questions sur Bases de la programmation (trace de pseudo-code)