Bases de la programmation (trace de pseudo-code)

Le programme suivant insère « F », placé en val[6], juste après « C » (indice 3) dans la liste chaînée A → C → E → D → B, reliée par le tableau next, puis affiche la liste à partir de l'élément d'indice 1. Les indices du tableau commencent à 1. Une valeur 0 dans next marque la fin de la liste. Que faut-il écrire à la place de 【a】 pour que l'affichage soit A, C, F, E, D, B ?

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
  1. Anext[3] ← 6, puis next[6] ← next[3]
  2. Bnext[6] ← 3, puis next[3] ← next[6]
  3. Cnext[6] ← next[3], puis next[3] ← 6
Afficher la réponse et l'explication

Réponse : C. next[6] ← next[3], puis next[3] ← 6

Pour insérer, on fait d'abord pointer le nouvel élément F vers E, vers lequel pointait C (next[3] = 5), puis on fait pointer C vers F. next[6] ← next[3] donne next[6] = 5, et l'affectation suivante next[3] ← 6 relie C → F → E. Dans l'ordre inverse, next[6] ← next[3] s'exécute alors que next[3] vaut déjà 6, donc next[6] = 6 : F pointe vers lui-même et l'affichage C, F, F, … ne se termine jamais. Pour modifier les liens d'une liste chaînée, on effectue les affectations dans un ordre qui ne perd jamais le chemin vers les éléments suivants.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases de la programmation (trace de pseudo-code)

  1. La boucle for suivante augmente sa variable de boucle de 5 à chaque passage. Quelle est la valeur de c après son exécution ?
  2. Dans le programme suivant, and n'évalue pas son membre droit quand le membre gauche est faux (évaluation en court-circuit). cnt est une variable globale. Quelle est la valeur de cnt après l'exécution du programme ?
  3. Le programme suivant cherche la valeur x dans le tableau a de n éléments et place dans i l'indice où elle est trouvée. Les indices du tableau commencent à 1. and et or n'évaluent pas leur membre droit quand le membre gauche suffit à déterminer le résultat. Quelle condition en 【a】 lit a[n + 1], en dehors du tableau, quand x n'est pas dans a ?
  4. Les valeurs réelles sont représentées en double précision IEEE 754 (binary64), et chaque somme est arrondie à la valeur représentable la plus proche. Quelle est la valeur de c après l'exécution du programme suivant ?
  5. La classe Counter donne à chaque instance sa propre variable membre entière count (0 à la création), et sa méthode inc() ajoute 1 à son propre count. Quelle est la valeur de x après l'exécution du programme suivant ?