Comment créer un arbre de chaîne de caractère

souka925 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
bonjour
j'aurais besoin d'aide pour le problème suivant
j'ai un programme qui manipule un arbre binaire,je peux mettre des caractères mais je veux mettre dans chaque noeud une chaine de caractère comment faire voici mon programme sans main.
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
struct noeud {
  char val;
  struct noeud *g;
  struct noeud *d;
};
typedef struct noeud *ab;

/*creation dun neoud*/
ab creat(char v, ab ls, ab rs)
{
  ab res;
 res  = (ab) malloc(sizeof(struct noeud));
  if (res == NULL) {
    fprintf(stderr, "Impossible d'allouer le noeud");
    return NULL;
  }

  res-> val = v;
  res->g = ls;
  res->d = rs;

  return res;
}
void ajout(ab* pr, char elt)
{
  if (pr==NULL) {
    printf("Erreur.");
    exit(1);
  } else if ((*pr)==NULL)
    *pr=creat(elt,NULL,NULL);
  else if ((*pr)->g==NULL)
    (*pr)->g=creat(elt,NULL,NULL);
  else if ((*pr)->d==NULL)
    (*pr)->d=creat(elt,NULL,NULL);
  else ajout( &((*pr)->g), elt);
}
 void afficheracine(ab n)
  { if (n != NULL) {
    printf("%c ", n->val);}
  }void parcourirArbre(ab n)
{
  if (n != NULL) {
    //printf("%d ", n->val);
    if((n->g)!=NULL)
    printf("%c", n->g->val);
    if((n->d)!=NULL)
    printf("%c", n->d->val);
    parcourirArbre(n->g);
  }
}
A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,
Pour ajouter une chaine, dans ta structure tu rajoutés :
soit char chaine[NB]
Soit char *chaine;
Dans le 1er cas, tu auras juste à faire un strcpy() pour copier la chaine de l'utilisateur dans la structur.
Dans le second cas, tu passes par une allocation dynamique (malloc() / calloc(), free()) dans la fonction ajout() et tu fais ton strcpy()
0