Alors bonsoir, je pose mon probleme qui porte sur les liste chainer. La fonction consiste a enlever un élément de la liste chainée et libérer la mémoire associée.
La liste est passé en adresse. Voici le code avec la structure associé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 typedef struct _animal{ int x; int y; int dir[2]; // direction courante sous la forme (dx, dy) float energie; struct _animal *precedent; struct _animal *suivant; } Animal;Je comprend pas a quoi servent les if et egalement leur contenu (par exemple animal->suivant->precedent = animal->precedent
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void enlever_animal(Animal **liste, Animal *animal) { if(animal->suivant != NULL) animal->suivant->precedent = animal->precedent; if(animal->precedent != NULL) animal->precedent->suivant = animal->suivant; if(*liste==animal) *liste= animal->suivant; free(animal); }c'est assez flou pour moi.
Merci d'avance au temps que vous passez pour moi![]()
Partager