[Liste chaînée] Suppression d'un élement
Bonjour,
Je souhaite supprimer un élément dans une liste chaînée, à l'aide de « rechercher »
Voila le code. Merci de bien vouloir le corriger.
Code:
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
| etd *Recherche(etd *e1,int cn){
etd *tmp=e1;
while(tmp!=NULL){
if(tmp->cne==cn){
return tmp;
}else{
return NULL;
}
tmp=tmp->suivant;
}
}
etd *Suprimer(etd *e1){
etd *tmp=e1->suivant;
int cn;
printf("\n Donner le numero de l'etudiant a supprimer");
scanf("%d",&cn);
etd *r=Recherche(e1,cn);
if(e1==NULL){
printf("\nViiiiide!");
}
if(e1->cne==cn){
tmp=e1->suivant;
free(tmp);
return e1;
}
else{
if(r=NULL)
printf("\nelement n'exist pas");
else{
while(tmp->suivant!=r){
tmp=tmp->suivant;
}
tmp->suivant=r->suivant;
free(r);
return e1;
}
}
} |
Voila la structure :
Code:
1 2 3 4 5 6 7 8
|
typedef struct etudiant etd;
struct etudiant{
int cne;
char nom[20];
char prenom[20];
etd *suivant;
}; |