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:
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;) c'est assez flou pour moi.Code:
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); }
Merci d'avance au temps que vous passez pour moi ;)