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

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2018
    Messages : 10
    Points : 7
    Points
    7

    Par défaut Transition arbre tableau

    Bonjour,

    Je suis actuellement bloqué dans mon projet a une étape importante. Je dois réaliser un profileur, et je veux donc trier par temps d’exécution mon affichage. Le problème est que j'ai une structure qui représente un arbre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    typedef struct node {
    	char *function;
    	double time; 
    	int nb_calls;
    	struct node *s; 
    	struct node *b; 
    } Node, *Tree;
    Et je voudrais passer d'un arbre à un tableau afin de pouvoir le trier et afficher les temps d'exécution par ordre croissant.

    J'ai pensé à l'idée à laquelle à chaque fois que j'alloue un nœud, je l'insère dans mon tableau, mais pour cela il me faudrait un indice en variable globale, car toutes mes fonctions sont récursives ...

    Merci d'avance.

  2. #2
    Expert confirmé
    Inscrit en
    mars 2005
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 1 401
    Points : 4 089
    Points
    4 089

    Par défaut

    Je ne suis pas sûr de comprendre. L'intérêt d'un arbre est justement de maintenir les données triées. Si tu dois les arranger selon un autre critère alors tu peux effectivement créer une seconde structure (arbre ou autre chose) avec les données en changeant simplement la fonction d'ordre.

    Pourrais-tu mieux détailler le cas d'utilisation ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2018
    Messages : 10
    Points : 7
    Points
    7

    Par défaut

    En fait je dois afficher ces données dans un tableau récapitulatif selon leur temps d'exécution en ordre croissant. Je veux donc transformer mon arbre initial en tableau afin de pouvoir éventuellement effectuer un qsort dessus et pouvoir afficher mon tableau récapitulatif correctement.

    Cependant, l'idée d'une nouvelle structure m'a déjà été proposé mais je ne vois pas comment l'implémenter ...
    Je pense à mettre le nom de la fonction, et son temps d'exécution en champs, mais je ne vois pas comment manipuler cette structure ...

    Merci bien

  4. #4
    Expert confirmé
    Inscrit en
    mars 2005
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 1 401
    Points : 4 089
    Points
    4 089

    Par défaut

    Je ne saisis toujours pas la nature du problème. Tu décris la procédure : mettre les nœuds dans un tableau. Qu'est-ce qui te bloque ?

    Est-ce parce que tu ne sais pas quelle taille allouer pour le buffer ? Auquel cas soit tu gardes trace du nombre d'allocations de nœuds, soit tu fais un parcours pour les compter, soit tu réalloues la zone de destination au fur et à mesure que tu les copies.

  5. #5
    Membre du Club Avatar de ekieki
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    avril 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : avril 2014
    Messages : 23
    Points : 44
    Points
    44

    Par défaut

    Citation Envoyé par gmalonga Voir le message
    Et je voudrais passer d'un arbre à un tableau afin de pouvoir le trier et afficher les temps d'exécution par ordre croissant.

    J'ai pensé à l'idée à laquelle à chaque fois que j'alloue un nœud, je l'insère dans mon tableau, mais pour cela il me faudrait un indice en variable globale, car toutes mes fonctions sont récursives ...

    Merci d'avance.
    Pas nécessairement

    1) tu crée une structure qui représente un tableau (extensible, à tant faire) de (pointeurs de) noeuds
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct TableauNoeuds {
         int capacite;
         int nb_noeuds;
         struct Noeud *data;
    }
    2) tu écris une fonction qui ajoute un (pointeur de) noeud dans le tableau, en le réallouant pour agrandir sa capacité si besoin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void ajouter_noeud(struct TableauNoeuds & adr_tableau, struct Noeud * pNoeud);
    3) Tu définis une fonction - récursive celle-ci - qui ajoute un noeud et ses sucesseurs dans un tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void ajouter_noeud_et_fils(struct TableauNoeuds & adr_tableau, struct Noeud * pNoeud);
    4) Initialiser le tableau, appeler la fonction sur la racine, trier, exploiter le résultat, fun + profit

Discussions similaires

  1. Filtrage d'un arbre (tableau)
    Par Yann39 dans le forum PL/SQL
    Réponses: 28
    Dernier message: 29/06/2010, 11h49
  2. Réponses: 7
    Dernier message: 28/04/2008, 20h55
  3. saisir elements arbre binaire dans un tableau
    Par babylone_59 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 25/10/2006, 16h38
  4. Un arbre dans un tableau
    Par Oberown dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/08/2006, 11h12
  5. XSL pour visualiser arbre XML sous forme de tableau en HTML
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 28/03/2003, 11h55

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