[C]supprimer element de la liste chainéé
stroumpf
Messages postés
289
Date d'inscription
Statut
Membre
Dernière intervention
-
stroumpf Messages postés 289 Date d'inscription Statut Membre Dernière intervention -
stroumpf Messages postés 289 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
bonsoir à tous,
j'ai fait une fonction qui supprime les element de la liste chaine qui ont une frequence<1
quand je l'ai testé tous les element sont supprimés seul l'elemnt entete qui n'est pas supprime
je vois pas pourquoi
voila le code
cordialement
bonsoir à tous,
j'ai fait une fonction qui supprime les element de la liste chaine qui ont une frequence<1
quand je l'ai testé tous les element sont supprimés seul l'elemnt entete qui n'est pas supprime
je vois pas pourquoi
voila le code
void filtrer_liste(Liste *seq) { Liste *next; Liste *premier_valide = NULL; Liste *q =seq; while (q != NULL) { // printf ("%d", q->freq); //suup = (float)(q->freq) / (float)(NombreLigne); // printf("%f", suup); // //if (suup <= Seuil) if(q->freq<=1) { if(premier_valide==NULL) { premier_valide=q->suivant; } else premier_valide->suivant=q->suivant; // nettoyage next = q->suivant; free(q); // libère la mémoire de 'p' q = next; } else { if (premier_valide == NULL) { premier_valide = q; } q = q->suivant; } } // q = premier_valide; }
cordialement
A voir également:
- [C]supprimer element de la liste chainéé
- Supprimer rond bleu whatsapp - Guide
- Liste déroulante excel - Guide
- Impossible de supprimer une page word - Guide
- Impossible de supprimer un fichier - Guide
- Supprimer pub youtube - Accueil - Streaming
4 réponses
tente ça :
void filtrer_liste(Liste *seq) { Liste *next; Liste *dernier_valide = NULL; Liste *q =seq; while (q != NULL) { if(q->freq<=1) { // nettoyage next = q->suivant; free(q); // libère la mémoire de 'p' q = next; } else { if (dernier_valide == NULL) { dernier_valide = q; seq=q; // seq pointe maintenant sur la première structure qui a une fréquence valide } else { dernier_valide->suivant=q; dernier_valide=q; } q = q->suivant; } } }
peut etre ca marche comme ca:
Liste * filtrer_liste(Liste *seq) { Liste *head=NULL,*previous=NULL,*current=NULL,*next=NULL; for(current=seq; current!=NULL; current=next) { next = current->suivant; if (current->freq<=1) { free(current); if (previous!=NULL) previous->suivant = next; } else { previous = current; if (head==NULL) head=current; } } return head; }