Bonsoir,
j'essaye d'écrire un programme en c qui contient les fonctions de base de manipulation d'une File .Comme le titre l'indique le modèle que j'essaye de développer consiste à une liste chaînée à double pointeurs c'est à dire un pointeur sur la cellule suivante ,un pointeur sur la cellule précédente et la tete de la liste chaînée pointe sur la queue de la File tout en considérant le pointeur du début de la File égale à NULL et le pointeur de fin de File égale à NULL .
Apres le Build et le Run l'exécutable cesse de fonctionner .
Pièce jointe 426030
Pièce jointe 426034
Pourriez vous m'aider à trouver le probleme s'il vous plait et merci.
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
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
#include <stdio.h>
#include <stdlib.h>
typedef struct Element Element;
struct Element
{
    int data;
    Element* prec;
    Element* suiv;
};
 
typedef struct File File ;
struct File
{
    Element *premier;
};
void init(File *ff)
{
    Element *nouveau=malloc(sizeof(*nouveau));
    ff->premier=nouveau;
    nouveau->prec=NULL;
    nouveau->suiv=NULL;
}
void enfiler(File *ff,int a)
{
    Element *nouveau=malloc(sizeof(*nouveau));
    if ((ff==NULL) || (nouveau==NULL))
    {
        exit(EXIT_FAILURE);
    }
    else if (ff->premier == NULL)
    {
        init(ff);
        ff->premier->data=a;
    }
    else
    {
        ff->premier->prec=nouveau;
        nouveau->suiv=ff->premier;
 
        ff->premier=nouveau;
        nouveau->prec=NULL;
        nouveau->data=a;
    }
}
int defiler(File *ff,int *x) //retourne 0 si c'est impossible de défiler 1 sinon
{
    Element *adefile=malloc(sizeof(*adefile));
    if ((ff==NULL)||(adefile==NULL))
    {
        exit(EXIT_FAILURE);
    }
    else if (ff->premier ==NULL)
    {
        return 0;
    }
    else
    {    adefile=ff->premier;
        while (adefile->suiv !=NULL)
        {
            adefile=adefile->suiv;
        }
        *x=adefile->data;
        adefile->prec->suiv=NULL;
        free(adefile);
        return 1;
    }
}
void afficher(File *ff)
{
   Element *actuel=malloc(sizeof(*actuel));
  if ((ff=NULL)||(actuel==NULL))
  {
      exit(EXIT_FAILURE);
  }
  actuel=ff->premier;
  while (actuel->suiv!= NULL)
  {
      printf("\n%d",actuel->data);
      actuel=actuel->suiv;
  }
}
int main()
{
    File *f=malloc(sizeof(*f));
    init(f);
    enfiler(f,5);
    enfiler(f,4);
    enfiler(f,369);
    enfiler(f,25);
    enfiler(f,18);
    enfiler(f,125);
 
    afficher(f);
    int a,b,z,y;
    z=defiler(f,&a);
    y=defiler(f,&b);
 
    afficher(f);
    printf("a=%d",a);
    printf("b=%d",b);
 
    return 0;
}