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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.