+ Cellule *pavant = NULL;
+ Cellule *pdebut = L;
+
+ while (L != NULL) {
+ /* supprimer en fin de liste */
+ if (L->valeur == e && L->suivant == NULL) {
+ free(L);
+ pavant->suivant = NULL;
+ return pdebut;
+ /* supprimer au début de la liste */
+ } else if (L->valeur == e && pavant == NULL) {
+ Cellule *pcourant = L;
+ free(L);
+ return pcourant->suivant;
+ /* supprimer au mileu de la liste */
+ } else if (L->valeur == e) {
+ Cellule *pcourant = L;
+ free(L);
+ L = pavant;
+ L->suivant = pcourant->suivant->suivant;
+ return pdebut;
+ }
+ pavant = L;
+ L = L->suivant;
+ }