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;
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);
}
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.
Merci d'avance au temps que vous passez pour moi