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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
void supprimer_element(itLDC *L,ELEMENT e)
{
begin(L);
if((*L)->courant !=NULL)
{
if(search((*L),e)==1)/*si l'élément est présent au moins une fois*/
{
begin(L);
while(hasNext(*L))
{/*on cherche un élément avec un nom et un prix similaire*/
if(hasPrevious(*L))/*si ce n'est pas le premier élément*/
{
if((e.valeur == (*L)->courant->val.valeur) && (strcmp(e.nom,(*L)->courant->val.nom)==0))
{
(*L)->courant->prec->suiv=(*L)->courant->suiv;
(*L)->courant->suiv->prec=(*L)->courant->prec;
free((*L)->courant);
}
next(L);
}
else /*si c'est le premier élément*/
{
if((e.valeur == (*L)->courant->val.valeur) && (strcmp(e.nom,(*L)->courant->val.nom)==0))
{
(*L)->courant=(*L)->courant->suiv;
free((*L)->courant->prec);
(*L)->courant->prec=NULL;
}
next(L);
}
}
if((e.valeur == (*L)->courant->val.valeur) && (strcmp(e.nom,(*L)->courant->val.nom)==0))
{/*si c'est le dernier élément*/
if(hasPrevious(*L))/*si ce n'est pas le premier élément*/
{
(*L)->courant=(*L)->courant->prec;
free((*L)->courant->suiv);
(*L)->courant->suiv=NULL;
}
else/*si c'est le seul élément*/
{
free((*L)->courant);
(*L)->courant=NULL;
}
}
}
}
} |
Partager