Je ne m'explique pas pourquoi.
Les printf OK et EMPILE ne sont là que pour servir de trace.
En ce qui concerne l'algo j'espère que je ne me suis pas planté
- Code: Tout sélectionner
void triIteratifGRD(GRD a)
{
PILE p=initpile();
if(a!=NULL)
{
printf("OK\n");
p=empile(p,&a);
}
while(!pilevide(p))
{
printf("OK2\n");
a=(depile(&p));
if(estVideGRD(a))
{
printf("OK3\n");
if(!pilevide(p))
{
printf("OK4\n");
a=depile(&p);
printf("OK5\n");
printf("%d\n",a->val); /*erreur de segmentation*/
printf("OK6\n");
}
}
else
{
printf("EMPILE\n");
p=empile(p,&((a)->gauche));
p=empile(p,&(a));
p=empile(p,&((a)->droite));
}
}
}
Une idée de ce qui cloche ?
Pour rappel voici les structures
- Code: Tout sélectionner
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 elpile* PILE;
a est bien de type GRD donc a->val est bien un int pour moi. Du coup je vois pas d'où ça vient...
Au niveau de la pile il doit pas y avoir de problème sinon je ne passerais pas les fonctions.
