Bonjour,
j'essaye de supprimer tous élements qui sont supérieur à une valeur dans une liste chainee. Mais je n'y parviens pas, j'ai essayé ceci:
Code:typedef struct liste { int nombre; liste *suivant }LISTE LISTE supprimer(LISTE *l, int n) { LISTE *temp = l; LISTE *t = l; if (l == NULL) return NULL; while (temp->suivant) { if ( t->nombre > n) { t->suivant = t->suivant->suivant; free(temp->suivant); free(temp); temp = t; } t = t->suivant; temp = temp->suivant; } afficher_liste(l); supprimer_liste(l); } return l;
Merci bien.
-----



, dans le cas présent, j'utiliserait un while, de façon à ne faire l'incrémentation que quand on en a besoin. J'utilise plutôt la boucle for quand l'instruction d'incrémentation est fixe.
Attention à bien mémoriser ce dont on se servira avant de faire un free. Par exemple la séquence (message 18) :
Et d'ailleurs je le fais toujours.