j'ai un probleme
au niveau de la fonction de la suppression quand je mets le *l dans la prototype de la fonction la suppression s'effectue d'un maniere parfaite .
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
element *suppression(element *l){
mais quand je ne le mets pas dans le prototype
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
element *suppression(){

le programme se bloque
Code C : 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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
// declaration des structures ;
typedef struct etudiant{
        char nom[30] ;
        char prenom[30] ;
        int age ;
        int note ;
        }etudiant ;
typedef struct element{
        etudiant val ;
        struct element *next ;
        struct element *precedent ;
        }element ;
// fonction d'ajout d'un seul element
element *ajout(){
        element *l ;
        l=(element *)malloc(sizeof(element));
        printf("\n");
        printf("****..entrez le nom de cet etudiant..****");
        scanf("%s",l->val.nom) ;
        printf("\n");
        printf("****..entrez le prenom de cet etudiant..****");
        scanf("%s",l->val.prenom);
        printf("\n");
        printf("****..entrez l'age de cet etudiant..****");
        scanf("%d",&l->val.age);
        printf("\n");
        printf("****..entrez la note de cet etudiant..****");
        scanf("%d",&l->val.note);
        return l ;
        }
// fonction de remplissage 
element *remplissage(){
        element *l , *p , *s ;
        int i , n ;
        printf("\n");
        printf("****..entrez le nombre d'etudiants..****");
        scanf("%d",&n);
        l=ajout();
        l->precedent=NULL ;
        l->next=NULL ;
        s=l ;
        for(i=0 ; i<n-1 ; i++)
        {
                p=ajout();
                s->next=p ;
                p->precedent=s ;
                p->next=NULL ;
                s=s->next ;
                }
        return l ;
        }
element *suppression(element *l){
          element *p , *s  ;
          int x ;
          char nnom[30] ;
          printf("\n");
          printf("press sur 1 pour supprimer le premier etudiant de la liste ");
          printf("\n");
          printf("press sur 2 pour supprimer un etudiant au milieu de la liste ");
          printf("\n");
          printf("press sur 3 pour supprimer un etudiant a la fin de la liste ");
          printf("\n");
          printf("****//entrez votre choix\\****");
          scanf("%d",&x);
          printf("\n");
 
          switch(x){
                   case 1:
                        s=l->next ;
                        free(l);
                        l=s ;
                        l->precedent=NULL ;
                        break ;
                   case 2:
                        printf("***// quel etudiant voulez vous supprimer (entrez son nom) \\***");
                        scanf("%s",nnom);
                        p=l ;
                        while(p!=NULL)
                        {
                                      if(strcmp(p->next->val.nom , nnom)==0)
                                      {
                                                           break ;
                                                           }
                                      p=p->next ;
                                      }
                        s=p->next->next ;
                        free(p->next);
                        p->next=s ;
                        s->precedent=p ;
 
                        break ;
                   case 3:
                        p=l ;
                        while(p->next!=NULL)
                        {
                                            p=p->next ;
                                            }
                        s=p->precedent ;
                        free(p);
                        s->next=NULL ;
 
                        break ;
 
                        }
                         return l ;
                        }
//fonction pour l'affichage 
void affichage (element *l){
     element *p ;
     p=l ;
     while(p!=NULL)
     {
                   printf("\n");
                   printf("le nom de l'etudiant est %s", p->val.nom);
                    printf("\n");
                   printf("le prenom de l'etudiant est %s", p->val.prenom);
                    printf("\n");
                   printf("l'age de l'etudiant est %d", p->val.age);
                    printf("\n");
                   printf("la note de l'etudiant est %d", p->val.note);
                   printf("\n");
                   p=p->next ;
                   }
                   }
int main(){
    element *l ;
    l=remplissage();
    l=suppression(l);
    affichage(l);
    getch();
}
aidez moi s'ils vous plait et merci