IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

création arbre


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 268
    Par défaut création arbre
    Bonjour je dois créér un algorythme de création d'arbre orienté pour le coder après en C.
    J'ai d'abord essayé tout seul et après avoir regardé sur internet j'ai quelques questions.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ma structure cellule
    {
    val entier
    gauche pointeur cellule
    droite pointeur celulle
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function ajout(racine:pointeur,n:entier)  : pointeur
    DEBUT
     
    Si racine != NIL
     
    ______Alors si val(racine) > n
     
    ________________Alors return ajout(droite(racine),n)
    ________________sinon return ajout(gauche(racine),n)
     
    __________fsi
     
    Sinon
    p<-Dispo()
    val(p) <- n
    gauche(p) <-nil
    droite(p) <- nil
    return p
    fsi
     
    FIN
    Donc je suis ok il me renvoit le pointeur (l'adresse) du nouveau bloc mais il n'a pas relié ce bloc à l'arbre

    Comment faire? quel est le principe ?

  2. #2
    Membre éprouvé
    Inscrit en
    Novembre 2002
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 120
    Par défaut
    En fait ton problème se situe au niveau des pointeurs: pour passer l'arbre en paramètres, il faut en fait passer un pointeur de pointeur (pour pouvoir intégrer les modifs). En C, cela devrait donner (non testé):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    cellule *ajout(cellule **ptr, int n)
    {
      if ((*ptr) != NULL) {
        if ((*ptr)->val > n) ajout(&(*ptr)->filsd, n);
        else ajout(&(*ptr)->filsg, n);
      }
      else {
        *ptr = malloc(sizeof **ptr);
        (*ptr)->val = n;
        (*ptr)->filsg = (*ptr)->filsd = NULL;
      }
      return *ptr;
    }
    En espérant ne pas avoir fait d'erreurs.

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    ShootDX >> Ici, puisque tu renvoies un pointeur, il n'est pas nécesssaire de passer l'adresse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    cellule *ajout(cellule *ptr, int n)
    {
      if (ptr != NULL) {
        if (ptr->val > n) 
           ptr->filsd = ajout(ptr->filsd, n);
        else 
            ptr->filsg = ajout(ptr->filsg, n);
      }
      else {
        ptr = malloc(sizeof *ptr);
        if (ptr != NULL) // toujours tester le retour de malloc.
        {
           ptr->val = n;
           ptr->filsg = ptr->filsd = NULL;
        }
      }
      return ptr;
    }
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

Discussions similaires

  1. création arbre (c++ clr)
    Par choisima dans le forum C++/CLI
    Réponses: 3
    Dernier message: 16/05/2013, 10h14
  2. JTree création de l'arbre, conseil?
    Par menuge dans le forum Composants
    Réponses: 4
    Dernier message: 23/05/2006, 17h53
  3. Création d'un arbre n-aire
    Par Premium dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 21/05/2006, 17h01
  4. [débutant Java] création d'un arbre binaire
    Par barouz dans le forum Langage
    Réponses: 2
    Dernier message: 16/04/2006, 04h25
  5. Algo de création d'arbre
    Par Loceka dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 24/11/2005, 23h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo