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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
typedef struct etudiant etd;
struct etudiant{
int cne;
char nom[20];
char prenom[20];
etd *suivant;
};