Une liste de 10 nœuds reçoit une insertion juste après le troisième, et les deux affectations sont écrites dans le mauvais ordre : le précédent regarde le nouveau avant que le nouveau ne regarde la suite.
Objectif
Compter ce qui reste atteignable, et ce qui est définitivement perdu.
Les deux écritures
neuf->suivant = p->suivant; /* le neuf regarde la suite */
p->suivant = neuf; /* puis le precedent regarde le neuf */
L'ordre inverse écrase l'adresse de la suite avant de l'avoir recopiée.
Ce que produit exactement la faute
L'affectation neuf->suivant = p->suivant est exécutée après que p->suivant a déjà été remplacé
par neuf : le nouveau nœud se désigne donc lui-même. Le parcours atteint quatre nœuds distincts,
puis tourne sans fin sur le dernier, et les sept nœuds qui suivaient ne sont plus désignés par
personne.
Pourquoi rien ne le signale
Aucune erreur, aucun message : deux lignes parfaitement valides suffisent. Les nœuds perdus occupent toujours la mémoire et ne peuvent plus être libérés, et le parcours, lui, ne rend jamais la main.