begin process at 2008 07 05 07:36:58
1 205 059 membres
45 nouveaux aujourd'hui
14 118 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème pointeur en c++ [ Archives / Au secours ] (ch3mical)

Problème pointeur en c++ le 14/10/2004 21:56:53

ch3mical
Bonjour

j'ai un problème avec une partie de code , lorsque je créer mon arbre binaire jai un message d'erreur lorsque je rappel ma fonction récursive . Voici les bout de code qui peuvent aider

les structures de travail
----------------------------------------------------------
typedef struct Noeud
{
int valeur;
struct Noeud * filsGauche, * filsDroit;
} Noeud;

typedef struct
{
Noeud * racine;
} ArbreBinaire
----------------------------------


le prototype
--------------------------------
void chargerDonnees (ArbreBinaire *arbre);
----------------------------------

Le main
----------------------------------

void main ()
{

// Déclaration de variables

int Choix; // Choix entrée de l'usager

ArbreBinaire * arbre = new ArbreBinaire;

//traitement de la racine , création d'un noeud
arbre->racine = new Noeud;

// Initilalisation des pointeurs de l'arbre
arbre->racine->filsGauche = NULL;
arbre->racine->filsDroit = NULL;

----------------------------------


la fonction
----------------------------------

void chargerDonnees (ArbreBinaire *arbre)
{

int nombre; // valeur entrée par l'usager

cout << "Entrez un nombre à entrer dans l'arbre:" ;
cin >> nombre;


if(arbre == NULL)
{
return;
}
//si filsDroit est plus petit valeur
else if(nombre <= arbre->racine->valeur)
{
//si le noeud filsDroit existe pas on doit en créer un nouveau
if(arbre->racine->filsGauche == NULL)
{
arbre->racine->filsGauche = new Noeud;
arbre->racine->filsGauche->filsGauche = NULL;
arbre->racine->filsGauche->filsDroit = NULL;

//on assigne la valeur reçu
arbre->racine->filsGauche->valeur = nombre;
}
else
{
//on rappel la fonction pour continu la création de l'arbre
chargerDonnees (arbre->racine->filsGauche );
}
}
else if(nombre > arbre->racine->valeur)
{
//si le noeud filsGauche existe pas on doit en créer un nouveau
if(arbre->racine->filsDroit == NULL)
{
arbre->racine->filsDroit = new Noeud;
arbre->racine->filsDroit->filsDroit = NULL;
arbre->racine->filsDroit->filsGauche = NULL;

//on assigne la valeur reçu
arbre->racine->filsDroit->valeur = nombre;

return;
}
else
{
//on rappel la fonction pour continu la création de l'arbre
chargerDonnees(arbre->racine->filsDroit);
}
}

}




----------------------------------





Re : Problème pointeur en c++ le 14/10/2004 23:51:13

ymca2003
la fonction chargerDonnees attend un pointeur sur une structure ArbreBinaire. Or dans la récuresion, tu passe un pointeur sur un Noeud (les fils gauche et droit)
=> en mettant comme paramètre un pointeur sur une structure Noeud ça devrait aller.

Pour commencer la récursion, il suffira de passer un pointeur sur la racine de l'arbre.


Classé sous : arbre, noeud, racine, filsdroit, filsgauche

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS