« Structures de données en C/Les listes simples » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 123 :
La destruction d'une liste concerne la libération de la mémoire préalablement réservée par le chainage de la liste. Je pense (et c'est discutable) que les bibliothèques ne doivent libérer que ce qu'elles ont alloué. Les données n'ont donc pas à être libérées. Elles peuvent être notamment des pointeurs vers des chaînes de caractères statiques, et je vous laisse imaginer les effets d'un <code>free</code> sur ce genre de pointeur.
 
<font color="blue">void</font> list_destroy(List *list)
<pre>
{
void list_destroy(List *list)
<font color="blue">while</font> (list) <font color="green">/* tant que l'on n'est pas arrivé en fin de liste */</font>
list = list_remove_first(list); <font color="green">/* retrait du premier élément de la liste */</font>
while (list) /* tant que l'on n'est pas arrivé en fin de liste */
}
list = list_remove_first(list); /* retrait du premier élément de la liste */
</pre>
 
Il est à noter que le pointeur original n'est pas modifié par la ligne <code>list = list->next</code>