Bonsoir a tous,
J'aimerais supprimer un mot contenu dans une liste simplement chainée de mots.
j'ai procédé ainsi :
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 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++; }
Mais ca me supprime toute la liste.
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); }
Je crois que mon probleme reside dans la boucle while, j'ai pourtant essayé de la modifier ... mais en vain .
Partager