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
}