Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1068 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Initialisation d'un arbre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Initialisation d'un arbre

n°1275934
rabzouze
Posté le 02-01-2006 à 16:49:23  profilanswer
 

Bonjour
 
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 :
  1. #include "arbre.h"
  2. void creerArbre(Arbre* a)
  3. {
  4.    *a = (Arbre)malloc(sizeof(Noeud));
  5.    (*a)->lettre = ' ';
  6.    (*a)->fgauche = NULL;
  7.    (*a)->fdroit = NULL;
  8. }
  9. void InitArbre(Arbre a, Liste l)
  10. {
  11.      int i = 0;
  12.      l = l->suiv;
  13.      while(l)
  14.      {
  15.          Arbre b = a;
  16.          char* m = l->morse;
  17.          for(i = 0; *(m+i) != '\0'; i++)
  18.          {   
  19.              Arbre e;
  20.            
  21.              if (*(m+i)=='.') e = b->fgauche;
  22.              else e = b->fdroit;
  23.                
  24.              //Arbre e = (*(m+i) == '.')? b->Gauche: b->Droit;     
  25.              if(e == NULL)
  26.              {
  27.                  e = (Arbre)malloc(sizeof(Noeud));
  28.                  e->fgauche = NULL;
  29.                  e->fdroit = NULL;
  30.                  if(*(m+i) == '.')
  31.                      b->fgauche = e;
  32.                  else
  33.                      b->fdroit = e;
  34.              }
  35.              b = e;
  36.          }
  37.          b->lettre = l->c;
  38.          l = l->suiv;
  39.      }
  40. }
  41. void Afficher_arbre(Arbre a)
  42. {
  43.      if (a!=NULL)
  44.      {
  45.           Afficher_arbre(a->fdroit);
  46.           //Afficher_arbre(a->fgauche);
  47.           printf("%c \n",a->lettre);
  48.           Afficher_arbre(a->fgauche);
  49.           //Afficher_arbre(a->fdroit);
  50.      }
  51. }
  52. char ConvertirMorse(char* m, Arbre a)
  53. {
  54.      int i = 0;
  55.    
  56.      for (i = 0; *(m+i) != '\0'; i++)
  57.      {
  58.          if(*(m+i) == '.')
  59.              a = a->fgauche;     
  60.          else
  61.              a = a->fdroit;       
  62.      }
  63.      return a->lettre;   
  64. }


mood
Publicité
Posté le 02-01-2006 à 16:49:23  profilanswer
 

n°1275987
Sebou77
French Tech powaa :-)
Posté le 02-01-2006 à 17:51:38  profilanswer
 

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

n°1275993
rabzouze
Posté le 02-01-2006 à 17:56:07  profilanswer
 

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
 
Merci pour ton aide


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Initialisation d'un arbre

 

Sujets relatifs
Creation arbre avec listeArbre binaire
Ajouter un noeud a un arbre en flashJe cherche un exemple d'algo type arbre shv
Arbre et recursivite : petit probleme a l'execution[HTML] Arbre binaire
[C++]Librairie de représentation d'arbre etc...?Arbre Binaire de Recherche générique
construire un arbre n-aireInitialisation complexe d'une variable globale ("code static")
Plus de sujets relatifs à : Initialisation d'un arbre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR