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

Fermé
souka925 Messages postés 1 Date d'inscription lundi 16 décembre 2013 Statut Membre Dernière intervention 16 décembre 2013 - Modifié par pijaku le 16/12/2013 à 08:11
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 16 déc. 2013 à 20:46
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
16 déc. 2013 à 20:46
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