Bonjour à tous,
J'essaye actuellement de coder une fonction supprimant la première instance d'une valeur passé en paramètre sur une liste chaînée.
Voici mon code :
Ca compile correctement mais ça ne fonctionne pas, je ne comprend pas vraiment pourquoi. Un coup de pouce ?
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 typedef struct cell { void *donnee; struct cell *next; } cell; typedef struct liste { cell *first; // Une liste est caractérisé par une cell de tête et de queue cell *last; } liste; int suppression_premiere_instance(liste *l, void *valeur) { cell *curr = l -> first; //curr est la première cellule cell *prev; //on crée une cellule prev if (l -> first == NULL) //cas si la liste est vide { return 0; } else if (curr -> donnee == valeur) //cas si la valeur recherchée est au début de la liste { l -> first = curr -> next; free(curr); return 1; } while ((curr -> next) != NULL) //autre cas. Tant qu'on est pas arrivé au bout de la liste { if (curr -> donnee == valeur) //si la valeur de la cellule est égale à la valeur recherchée { prev -> next = curr -> next; //on fait pointer prev vers la cellule pointé par curr free(curr); //on libère la cellule courante return 1; } curr = curr -> next; //on avance dans la liste } }
Cordialement,
KhaaB
Partager