Création d'un arbre n aire en C qui contient au début un élement spécial

meriem123435 Messages postés 4 Date d'inscription dimanche 9 mai 2010 Statut Membre Dernière intervention 19 décembre 2010 - 3 juin 2010 à 13:04
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 24 juin 2010 à 10:21
Bonjour !
Je veux créer un arbre n aire en c, qui contient comme tête un élément spécial genre '#'.
J'ai déclaré ma structure comme suit :

typedef struct Arbre
{
char lettre;
char car;
struct Arbre * fils;
struct Arbre * frere;
} Arbre;

Dans cet arbre je veux insérer des mots , le arbre-> car est un élément spécial qui indique la fin du mot.

Dans ma fonction de création j'ai commencé comme ceci, mais je bloque pour la suite, faut dire que je suis un peu débutante en ce qui concerne les listes chainés et l'arborescence.

Tout d'abord on doit saisir une chaine qui représente le mot à insérer.

void CreerArbre(Arbre *Racine,char mot[])
{
Arbre *p,*q;
int i=0,l;

if(Racine==NULL)
{
Racine=(Arbre *)malloc(sizeof(Arbre));
Racine->fils=NULL;
Racine->frere=NULL;
Racine->lettre='#';
Racine->car='.';
p=Racine;
}
else
{
q=p;
p=p->fils;
l=strlen(mot);
if(p=NULL)
for (i=0;i<l;i++)
{
p=(Arbre *)malloc(sizeof(Arbre));
p->fils=NULL;
p->frere=NULL;
p->lettre=mot[i];
i=i+1;
if (i=l) p->car='.';
}
}

}


Merci de m'aider à créer cet arbre n aire
J'en ai vmt besoin !

3 réponses

Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
7 juin 2010 à 09:47
Bonjour,

Alors déjà attention quand tu fait :
q=p;

Tes variables p et q ne sont pas encore initialisé donc tu auras des adresse aléatoire ce qui est pas cool
Donc :
else
{
p = (Arbre *)malloc(sizeof(Arbre));
q=p; 

Que veut tu faire ici ???
p=p->fils;


Je ne comprend pas le but de cette arbre
Pourquoi stocker carac par carac (un char* c'est mieux non ?)

Quand tu voudras supprimer l'arbre pense bien à faire des free si non tu vas pourrir ta mémoire

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
0