Besoin daide pour corriger cette fonction

sabri -  
 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;
}
A voir également:

1 réponse

le père
 
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.
0