Supprimer valeur liste chaînée
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 :
Code:
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
}
} |
Ca compile correctement mais ça ne fonctionne pas, je ne comprend pas vraiment pourquoi. Un coup de pouce ? :ccool:
Cordialement,
KhaaB