suppression des occurences d'un element dans une liste simplement chainée
Bonjour,
voici un exemple de code en c qui supprime toutes les occurrences d'un élément dans une liste simplement chaînée :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
void removeOccElem(cel** l , int elem){
cel* ptr = *l ;
cel* temp ;
//l'element à supp est dans l'en-tete de la liste
while(ptr && ptr->elem==elem){
*l= ptr->suiv ;
free(ptr);
ptr = *l ;
}
// supp des autres occurences
while(ptr->suiv){
temp=ptr->suiv ;
if(temp->elem==elem){
ptr->suiv=temp->suiv ;
free(temp);
}else{
ptr=ptr->suiv;
}
}
} |
Comment puis-je optimiser ce code ?
Merci
E. Bazoga