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

C++ Discussion :

Allocation dynamique d'arbre


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Allocation dynamique d'arbre
    Salut!

    Je suis en train de faire un programme qui parcourt un arbre.
    Je le fais de façon récursive avec une seule fonction :

    1- Je donne un noeud de départ (la racine).
    2- Je regarde à l'intérieur du noeud le nombre de noeuds de plus bas niveau

    Je pensais n'utiliser qu'une seule giga structure récursive :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    struct directory_data
    {
    int dir_count;
    string path;
    directory_data *dir;
    };


    De cette facon, je n'ai qu'une seule structure (appelons là toplevel) qui contient tous les noeuds de plus bas niveau.
    Ex: toplevel.dir[0] pour aller au noeud 0 de la racine.Cependant, lorsque j'aurais, disons, toplevel.dir[24].dir[256].dir[1], j'aurais fait un paquet d'allocation dynamiques s'emboitant les unes aux autres .
    Donc ma question!

    Faudra-il TOUT reparcourir pour désallouer chaque tableau ou simplement "delete toplevel;" (LA STRUCT du plus haut niveau, qui contient toutes les alloc de plus bas niveau) marcherait? J'ai pensé utilisé les vecteurs, mais est-ce le chemin à emprunter si je ne compte que "lire" l'arbre sans le modifier? Je pas vraiment besoins des fonctions push_back ou autres étant donné que mon conteneur sera d'une taille fixe, mais un stack pourrait faire l'affaire à la limite...
    Merci de vos lumières


    Ps. Si le bonne façon de faire est d'utiliser un conteneur, est-ce que je pourrais savoir comment on désalloue mon arbre quand même? :p

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Tu es en c++ : sers toi des constructeurs et destructeurs, ils sont là pour régler ce type de problème
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  3. #3
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Points : 827
    Points
    827
    Par défaut Ya tout sur le site!
    Salut,

    Tout est là :
    http://rperrot.developpez.com/articl...ctures/arbres/ en C
    http://sites.univ-provence.fr/wcpp/V1/Lecons/L19.pdf en C++
    http://carl.seleborg.free.fr/cpp/cou...p2/arbres.html en C++
    et bien d'autres...

    De plus, ta structure ressemble plus à une liste qu'a un arbre, non?

    Bon codes...

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 18
    Points : 23
    Points
    23
    Par défaut
    Les cours que tu donnes bertry sont de bien piètre qualité, c'est soit du C soit du C with classes (C++ très mal utilisé s'apparentant plus à du C).

    Un moyen simple de représenter ton arbre serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct node {
    some_type content;
    std::vector<node> children;
    };
    Ainsi aucun besoin de rédiger les quatre méthodes de base pour gérer le cycle de vie des objets en C++ (constructeur par défaut, constructeur de copie, opérateur d'assignation et destructeur), tout est géré tout seul par std::vector.

    On peut même rendre tout cela générique avec des templates:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    template <typename T>
    struct node {
    T content;
    std::vector<node<T> > children;
    };

  5. #5
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Points : 827
    Points
    827
    Par défaut
    Trop fort Nico
    Bye

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Chouette, je me remets au code!

    C'est bien beau les vecteurs

Discussions similaires

  1. probleme d'allocation dynamique
    Par vince3320 dans le forum C
    Réponses: 10
    Dernier message: 22/04/2004, 16h27
  2. petit pbm allocation dynamique de stringGrid
    Par AnneOlga dans le forum C++Builder
    Réponses: 10
    Dernier message: 17/01/2004, 11h59
  3. Allocation dynamique de structures
    Par fr_knoxville dans le forum C
    Réponses: 8
    Dernier message: 06/05/2003, 21h59
  4. Allocation dynamique de mémoire en asm
    Par narmataru dans le forum Assembleur
    Réponses: 7
    Dernier message: 17/12/2002, 22h31
  5. Réponses: 4
    Dernier message: 03/12/2002, 16h47

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