Supprimer toutes les occurences d'un élément  d'une liste:
                                                    procédure supprimerTous(<>cellule* listeP,> point p);

void supprimerTous(cellule** listeP, point p)
 {cellule* pred=NULL;
  cellule* aux= (*listeP);
    while (aux != NULL)
     {
       if (p.x == aux->p.x && p.y == aux->p.y)
         if (aux == (*listeP))    
/* c est le premier de la liste */     
           {
           (*listeP) = aux->suivant;
            free(aux);
           }
       else              
/* ce n est pas le premier de la liste */
           {
            pred->suivant = aux->suivant;
            free(aux);
            aux = pred;
           }
       pred = aux;
       aux = aux->suivant;
       }
 }

int main()
 {
  cellule* listPoints = NULL;
  point p1 = {10,11};
  point p2 = {34,56};
  ajouter(&listPoints,p1);
  ajouter(&listPoints,p2);
 
ajouter(&listPoints,p1);
  ajouter(&listPoints,p2);

.....
   supprimerTous(&listePoints, p2);
.....
     }  
suivant              plan