Bonjour, j'ai grand besoin d'aide pour débugguer mon programme; si quelqun pouvait m'aider ce serait sympas; voilà les erreurs
arbre.c: In function ‘empile’:
arbre.c:72:5: error: dereferencing pointer to incomplete type
tmp->feuille = feuille;
^
arbre.c:73:5: error: dereferencing pointer to incomplete type
tmp->suivant = p;
^
arbre.c: In function ‘depile’:
arbre.c:79:21: error: dereferencing pointer to incomplete type
GRD *feuille = (*p)->feuille;
^
arbre.c:82:11: error: dereferencing pointer to incomplete type
*p = (*p)->suivant;
^
unit_test_itArbre.c: In function ‘triIteratifGRD’:
unit_test_itArbre.c:12:4: warning: assignment from incompatible pointer type [enabled by default]
a=(depile(&p));
^
unit_test_itArbre.c:17:9: error: incompatible types when assigning to type ‘struct unfeuille’ from type ‘struct unfeuille **’
(*a)=depile(&p);
Voici mes prototypes
A partir de ça, voici mon algo de tri itératif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 typedef struct unfeuille { int val; struct unfeuille *gauche; struct unfeuille *droite; }feuille; typedef struct unfeuille * GRD; typedef struct elpile { GRD* feuille; struct elpile* suivant; //pointeur sur la feuille suivante }pile; typedef struct pile* PILE;
Ainsi que les fonctions pour empiler/depiler
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 void triIteratifGRD(GRD a) { PILE p=initpile(); while(!pilevide(p)) { a=(depile(&p)); if(estVideGRD(a)) { if(!pilevide(p)) { (*a)=depile(&p); printf("%d\n",(a)->val); } } else { p=empile(p,&((a)->gauche)); p=empile(p,&(a)); p=empile(p,&((a)->droite)); } } }
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 PILE empile(PILE p, GRD *feuille) { PILE tmp = malloc(sizeof(&tmp)); if (tmp == NULL) { puts("pb memoire"); exit(0); } tmp->feuille = feuille; tmp->suivant = p; return tmp; } GRD* depile(PILE *p) { GRD *feuille = (*p)->feuille; PILE tmp = *p; *p = (*p)->suivant; free(tmp); return feuille; }
Malheureusement je n'arrive toujours pas à compiler et je ne vois pas quelle solution adopter. Un tri de manière récursif est pourtant si simple
J'ai grand besoin d'aide là dessus; merci à tous !
Partager