Bonsoir a tous,
J'aimerais supprimer un mot contenu dans une liste simplement chainée de mots.
j'ai procédé ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 .