Comment créer un arbre de chaîne de caractère
souka925
Messages postés
1
Statut
Membre
-
fiddy Messages postés 11653 Statut Contributeur -
fiddy Messages postés 11653 Statut Contributeur -
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.
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);
}
}
1 réponse
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()
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()