Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

Il y a 38 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

g 1 probleme avec mon arbre !!!

 
n°9116
gmxpa
Profil : Jeune recrue
Posté le 16-06-2004 à 10:57:42  profilanswer
 

slt tt le monde!  
voila je veux implementer un arbre ( en c )ou chaque noeud a 4 fils  
donc j'ai utiliser la structure suivante:  
 
Code:  
typedef struct noeud  
{  
    double X;  
    struct noeud *ptr1,*ptr2,*ptr3,*ptr4;  
  } NOEUD,*POINTEUR;
 
 
et ou les deux premiers noeuds ont pour valeur la valeur du noeud pere +1 et les deux derniers noeuds, la valeurs du noeud pere -1.  
 
mon probleme est le suivant:  
quand j'execute mon code ( voir code ci-dessous ) mon programme ne developpe a chaque iteration que le derniers pointeur sauf pour les 4 premiers fils, je sais que le probleme doit etre au niveau de la fonction insertion(...), mais je ne sais pas quoi modifier pour que ça marche  
 
merci d'avance pour votre aide !   :bounce:  
 
Code:  
 
#include <iostream>  
#include <cstdlib>  
 
typedef struct noeud  
  {  
    double X;  
    struct noeud *ptr1,*ptr2,*ptr3,*ptr4;  
   } NOEUD,*POINTEUR;  
 
POINTEUR alloc(double x,POINTEUR p1,POINTEUR p2,POINTEUR p3,POINTEUR p4)  
 
{  
     POINTEUR p=(POINTEUR)malloc(sizeof(NOEUD));  
     
     p->X=x;  
     p->ptr1=p1;  
     p->ptr2=p2;  
     p->ptr3=p3;  
     p->ptr4=p4;  
     
     return p;  
}  
 
 
POINTEUR insertion( POINTEUR r,double X)  
{  
     if(r==NULL)  
        r=alloc(X,NULL,NULL,NULL,NULL);  
     else  
      {  
          if(r->ptr1==NULL)  
   r->ptr1=insertion(r->ptr1,X+1);  
            else if(r->ptr2==NULL)  
   r->ptr2=insertion(r->ptr2,X+1);  
            else if(r->ptr3==NULL)  
   r->ptr3=insertion(r->ptr3,X-1);  
            else  
   r->ptr4=insertion(r->ptr4,X-1);  
       }    
     
     return r;  
}  
 
 
void parcours(POINTEUR r);  
 
void main()  
{  
     POINTEUR racine=NULL;  
     double Xu=0;  
 
     for(int i=0;i<15;i++)  
         racine=insertion(racine,Xu);  
 
     parcours(racine);  
}  
 
//// Parcours de l'arbre en pré-ordre et Affichage du resultat  
 
void parcours(POINTEUR r)  
{  
     if(r!=NULL)  
       {  
          printf("\n %f",r->X);  
          parcours(r->ptr1);  
          parcours(r->ptr2);  
          parcours(r->ptr3);  
          parcours(r->ptr4);  
       }  
}

 
 :bounce:  


Aller à :
Ajouter une réponse