La suppression
Question
Sur le modèle de la fonction d'insertion, écrivez la fonction de suppression.
La valeur de retour sera un pointeur sur l'élément suivant ou NULL, si l'élément supprimé était le dernier.
Le prototype de la fonction sera : TlisteD suppressionD(TlisteD *ptliste, int i)
.
Solution
1
TlisteD suppressionD(TlisteD *ptliste, int i){
2
TlisteD courant=*ptliste ;
3
TlisteD pere=NULL ;
4
TlisteD ptaux;
5
// recherche de l'élément
6
while(courant !=NULL && courant->val!=i) {
7
pere=courant ;
8
courant=courant->suivant ;
9
}
10
// la valeur existe dans la liste on la supprime
11
if(courant){
12
ptaux=courant->suivant;
13
if (NULL==pere) *ptliste=ptaux;
14
else pere->suivant=ptaux ;
15
if(ptaux) ptaux->precedent=pere;
16
free(courant) ; // libération
17
}
18
return ptaux;
19
}