Bonjour,
J'essaie de créer une file en c et je bloque à cause d'une erreur que je ne comprend pas.
Quelqu'un saurait il d'où vient le problème ?
Voici le code :
file.h
file.c
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 #ifndef FILE_H #define FILE_H typedef struct tagQueueElt{ int data; struct tagQueueElt* next; }QueueElt; typedef struct tagQueue{ QueueElt* first; QueueElt* last; int size }Queue; // Initialisation de la file void initialization(Queue*); //Taille de la file int size(Queue*); //Ajout d'un élément dans la file int push(Queue*, int); //Supression du premier élément de la file int pop(Queue*); //Affichage de la liste void affiche(Queue*); #endif
Le test
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 #include <stdlib.h> #include <stdio.h> #include "file.h" // Initialisation de la file void initialization(Queue* file){ file->first = NULL; file->last = NULL; file->size = 0; } //Taille de la file int size(Queue* file){ return file->size; } //Ajout d'un élément dans la file int push(Queue* file, int data){ QueueElt* newelt; if ((newelt = (QueueElt*) malloc (sizeof (QueueElt))) == NULL) return -1; newelt->data = data; QueueElt* courant = file->first; if(courant == NULL){ file->last = newelt; newelt->next = file->first; file->first = newelt; }else{ if(courant->next == NULL){ file->last = newelt; newelt->next = courant->next; courant->next = newelt; } else{ file->last->next = newelt; newelt->next = NULL; } } file->size++; return 0; } //Supression du premier élément de la file int pop(Queue* file){ QueueElt* eltsupp; if (file->size == 0) return -1; eltsupp = file->first; file->first = file->first->next; free(eltsupp); file->size--; return 0; } //Affichage de la liste void affiche(Queue* file){ QueueElt* courant = malloc(sizeof(QueueElt)); int i; courant = file->first; for(i = 0 ; i < file->size ; i++){ printf(" %d ", courant->data); courant = courant->next; } }
J'obtient 2 erreurs :
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 #include <stdlib.h> #include <stdio.h> #include "file.h" int main(){ Queue* file = malloc(sizeof (Queue*)); printf("taille de file vide : %d\n", size(file)); push(file,10); push(file,20); push(file,30); push(file,40); push(file,50); affiche(file); printf("\n"); pop(file); affiche(file); printf("\n"); }
- file.h:14:1: warning: no semicolon at end of struct or union [enabled by default]
}Queue;
- Erreur de segmentation portant sur le printf(" %d ", courant->data); en gras
Merci
Partager