1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| int supp(dl_Liste *liste, int pos){
int i;
dl_Element *supp_element,*courant;
if(liste->taille == 0)
return -1;
if(pos == 1){ /* suppresion de 1er élément */
supp_element = liste->debut;
liste->debut = liste->debut->suivant;
if(liste->debut == NULL)
liste->fin = NULL;
else
liste->debut->precedent == NULL;
}else if(pos == liste->taille){ /* suppression du dernier élément */
supp_element = liste->fin;
liste->fin->precedent->suivant = NULL;
liste->fin = liste->fin->precedent;
}else { /* suppression ailleurs */
courant = liste->debut;
for(i=1;i<pos;++i)
courant = courant->suivant;
supp_element = courant;
courant->precedent->suivant = courant->suivant;
courant->suivant->precedent = courant->precedent;
}
free(supp_element->donnee);
free(supp_element);
liste->taille--;
return 0;
} |
Partager