Bonjour,

pourquoi le programme ci-dessous cesse de fonctionner après l'exécution de la fonction remplir et ne fait l'affichage?!
Est ce que vous pouvez m'aidez?

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
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct
{
int code;
char marq[10];
int capacite;
double prix;
}ordinateur;
struct element
{
  ordinateur  info;
  struct element* suiv;
};
struct element* remplir(struct element*L)
{
int r;
 struct element* p,*q;
 do
 {
    p=(struct element*)malloc(sizeof(struct element));
    printf("remplir la liste \n code:\n ");
    scanf("%d",&(p->info).code);
    printf("marque:\n ");
    scanf("%s",&(p->info).marq);
    printf("capacite memoire:\n ");
    scanf("%d",&(p->info).capacite);
    printf(" prix:\n ");
    scanf("%f",&(p->info).prix);
      p->suiv=NULL;
 }
    while((p->info).code!=0);
 
     if(L==NULL)
     {
        p=L;
     }
     else
     {
         q=L;
      while(q->suiv!=NULL)
      {
        q=q->suiv;
        q->suiv=p;
      }
     }
     return(L);
}
void affichage (struct element* L)
{
  struct element*p ;
  p=L;
  while(p!= NULL)
  {
    printf("le code est %d:\n",(p->info).code);
    printf("la marque est %s:\n",(p->info).marq);
    printf("la capacite est %d: \n",(p->info).capacite);
    printf("le prix est  %f: \n",(p->info).prix);
    p=p->suiv;
  }
}
struct element* supprime( struct element* L,int x)
{
    struct element*p ,*q;
   int tr=0;
   p=L;
   if( ((p->info).code!=x)&&(p=NULL))
   {
       printf("l'element a supprimer n'existe pas\n");
 
   }
    if( (p->info).code==x)
    {
    L=p->suiv;
    free(p);
    }
    else
    {
        while ((tr==0)&&(p->suiv!=NULL))
            if( ((p->suiv)->info).code==x)
            tr=1;
        else
           p=p->suiv;
        if(tr==1)
        {
 
            q=p->suiv;
            p->suiv=q->suiv;
            free(q);
        }
    }
     return(L);
}
int main()
{
int x;
struct element* L;
L=NULL;
 remplir(L);
 printf("***\t affichage elements\t***\n ");
 affichage(L);
 printf(" donner le code de l'element a supprimer:\n");
 scanf("%d",&x);
L= supprime(L,x);
 affichage(L);
    getch();
}