Donc mon problème est que lorsque je'initialise un arbre avec une liste j'ai un probleme pour la premiere valeur de la liste qui est A;
A la place de cette valeur il me met un "x" je ne voi d'ou me vient l'erreur.
J'aimerais savoir si ca provient de la liste ou du code le probleme.
Voila mon code de l'initialisation de l'arbre
Code :
#include "arbre.h"
void creerArbre(Arbre* a)
{
*a = (Arbre)malloc(sizeof(Noeud));
(*a)->lettre = ' ';
(*a)->fgauche = NULL;
(*a)->fdroit = NULL;
}
void InitArbre(Arbre a, Liste l)
{
int i = 0;
l = l->suiv;
while(l)
{
Arbre b = a;
char* m = l->morse;
for(i = 0; *(m+i) != '\0'; i++)
{
Arbre e;
if (*(m+i)=='.') e = b->fgauche;
else e = b->fdroit;
//Arbre e = (*(m+i) == '.')? b->Gauche: b->Droit;
if(e == NULL)
{
e = (Arbre)malloc(sizeof(Noeud));
e->fgauche = NULL;
e->fdroit = NULL;
if(*(m+i) == '.')
b->fgauche = e;
else
b->fdroit = e;
}
b = e;
}
b->lettre = l->c;
l = l->suiv;
}
}
void Afficher_arbre(Arbre a)
{
if (a!=NULL)
{
Afficher_arbre(a->fdroit);
//Afficher_arbre(a->fgauche);
printf("%c \n",a->lettre);
Afficher_arbre(a->fgauche);
//Afficher_arbre(a->fdroit);
}
}
char ConvertirMorse(char* m, Arbre a)
{
int i = 0;
for (i = 0; *(m+i) != '\0'; i++)
{
if(*(m+i) == '.')
a = a->fgauche;
else
a = a->fdroit;
}
return a->lettre;
}
Publicité
Posté le 02-01-2006 à 16:49:23
Sebou77
French Tech powaa :-)
Posté le 02-01-2006 à 17:51:38
t'as pas un segmentation fault dès l'initialisation de ton arbre ?
Car je vois que dans ta boucle while tu déclare un nouvelle arbre sans réservé de la mémoire (et en plus pas du tout à la bonne place), et pareil dans ta boucle for
rabzouze
Posté le 02-01-2006 à 17:56:07
Tout fonctionne je nai aucune erreur.
J'ai trouvé le probleme c'est que j'avais incrémenté ma liste des lke depart c'est pour cela que je n'ai pas la bonne valeur pour le A