Suppression dans une liste chainée
Bonsoir a tous,
J'aimerais supprimer un mot contenu dans une liste simplement chainée de mots.
j'ai procédé ainsi :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| while((i<6))
{
if(v[i]!='*')
{
while(p!=NULL){
strcpy(motchaine, p->val);
mot=motchaine;
temp = exist(motchaine, v[i]);
if(temp ==-1)//caractere inexistant
{
supprimer(&p, mot);
}
else
p = p->suivant;
}
}
i++;
} |
La fonction supprimer est la suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Liste* _supprimer(Liste* l, char* s)
{
Liste* res;
if(l == NULL)
return NULL;
if(strcmp(s,l->val) == 0)
{
res = _supprimer(l->suivant,s);
free(l);
}
else
{
res = l;
l->suivant = _supprimer(l->suivant,s);
}
return res;
}
void supprimer(Liste** L,char* s)
{
*L = _supprimer(*L,s);
} |
Mais ca me supprime toute la liste.
Je crois que mon probleme reside dans la boucle while, j'ai pourtant essayé de la modifier ... mais en vain .