Supprimer dans une liste chainée
Bonjour,
j'ai un petit soucis au niveau de la suppresion de la premiere instance d'une donnée dans une liste :
voici les structures :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
typedef struct Element Element;
struct Element
{
void * contenu;
Element * suivant;
};
typedef struct Liste Liste;
struct Liste
{
Element *premier;
Element *dernier;
}; |
et voici ma fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
void supprimerdonnee(Liste *liste, void *donnee){
Element *elem = liste->premier;
if (liste->premier == NULL){
exit(EXIT_FAILURE);
}
if (elem->contenu == donnee){
liste->premier = elem->suivant;
free(elem);
}
while(elem->suivant != NULL){
if (elem->suivant->contenu == donnee){
Element *element = elem->suivant;
elem->suivant = element->suivant;
free(element);
}
elem = elem->suivant;
}
} |
Ça compile mais ne fonctionne pas .
Merci de vos réponses.
Cordialement.
PS : ma structure de chaîne à deux pointeurs mais je n'en utilise qu'un car je suis pas encore assez à l'aise avec les pointeurs.