Besoin daide pour corriger cette fonction
sabri
-
le père -
le père -
Bonjour,cette fonction en c na pa marché correctement ;qui peu la coriger,
cettte fonction supprime les occurence dans une liste
liste supp_occ(liste l)
{liste i,j;
for(i=l;i!=NULL;i=i->svt)
{for(j=i->svt;j!=NULL;j=j->svt)
if(i->val==j->val)
free(j);}
return l;
}
cettte fonction supprime les occurence dans une liste
liste supp_occ(liste l)
{liste i,j;
for(i=l;i!=NULL;i=i->svt)
{for(j=i->svt;j!=NULL;j=j->svt)
if(i->val==j->val)
free(j);}
return l;
}
A voir également:
- Besoin daide pour corriger cette fonction
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Corriger un message whatsapp - Guide
1 réponse
Bonjour
Quand tu fais free(j), tu corromps ta liste : l'élément précédent pointe sur une zone qui n'est plus allouée, et il n'y a plus rien qui pointe sur l'élément suivant.
AVANT de désallouer, il faut commencer par connecter l'élément qui précède celui que tu vas effacer à celui qui le suit.
Et après avoir effacé, il ne faut pas oublier de faire pointer j sur l'élément suivant, car ce que représentait j a disparu et j!=NULL et j->svt ne sont plus corrects.
Quand tu fais free(j), tu corromps ta liste : l'élément précédent pointe sur une zone qui n'est plus allouée, et il n'y a plus rien qui pointe sur l'élément suivant.
AVANT de désallouer, il faut commencer par connecter l'élément qui précède celui que tu vas effacer à celui qui le suit.
Et après avoir effacé, il ne faut pas oublier de faire pointer j sur l'élément suivant, car ce que représentait j a disparu et j!=NULL et j->svt ne sont plus corrects.