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 d'un arbre n-aire


Sujet :

Algorithmes et structures de données

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut Création d'un arbre n-aire
    Bonjour,

    j'aimerais avoir une aide concernant la création d'un arbre n-aire dont chaque noeud contiendrait une adresse IP.

    Merci par avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct s_IP
     {
            char IP[4];// adresse IP
            struct s_IP **tabIP; // tableau des adresse des noeuds associés (tableau dynamique)
     }

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Premium
    Bonjour,

    j'aimerais avoir une aide concernant la création d'un arbre n-aire dont chaque noeud contiendrait une adresse IP.

    Merci par avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct s_IP
     {
            char IP[4];// adresse IP
            struct s_IP **tabIP; // tableau des adresse des noeuds associés (tableau dynamique)
     }
    Il manque un information sur la taille du tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    struct node_ip
    {
       /* adresse IP */
       unsigned char ip[4];// 
     
       /* tableau des adresse des noeuds associés */
        struct node_ip **a_nodes; 
     
       /* nombre d'elements du tableau */
       size_t nb_elem;
    };
    Ensuite, on peut convenir que le pointeur en a_nodes[0] est le père du noeud...
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut
    Avec la structure précédente, j'ai crée une fonction permettant de créer un noeud de l'arbre :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct node_ip
    {
      /* adresse IP */
      unsigned char ip[4]; 
     
      /* tableau des adresse des noeuds associés */
      struct node_ip **a_nodes; 
     
      /* nombre d'elements du tableau */
      size_t nb_elem;
    }Node_ip;
     
    typedef Node_ip *Tree;
     
     
     
    Tree CreerNode(char ip[4]){
      int i;
     
      Tree tree = (Tree)malloc(sizeof(Node_ip));
      if(tree == NULL){
        perror("erreur allocation");
        exit(1);
      }
     
      for(i=0; i<4; i++)
        tree->ip[i] = ip[i];
      tree->a_nodes = NULL;
      tree->nb_elem = 0;
     
      return tree;
    }
    Je bloque sur l'insertion et la recherche

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 87
    Points : 63
    Points
    63
    Par défaut
    afin d'eviter les bug de gestion de la variable contenant le nombre d'elements, il peut etre simpa de faire que le dernier element du tableau soit un pointeur vers NULL; Cela permet de connaitre la fin du tableau lors de son parcour, et on ne risque pas de taper dans le vide si la variable a mal ete entretenue.
    Busy 999

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut
    Salut,

    en faite, ma structure est inadaptée car un sommet donné peut apparaitre dans plusieurs fils par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        A-------
        | \       |
        E  B    D
        |    |
        F   C
      / |    |
    H  D  D
    Par exemple si on a cet arbre.

    Lorsqu'il faudra ajouter un fils à D, quel D sera choisit ?

    Que proposeriez-vous pour pouvoir représenter les résultats des différents traceroute sans encombre?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. création et affichage d'un arbre n-aire en c
    Par fattouma2014 dans le forum Débuter
    Réponses: 1
    Dernier message: 07/03/2014, 23h42
  2. Parcours en profondeur d'un arbre n-aire
    Par Premium dans le forum Langage
    Réponses: 11
    Dernier message: 20/02/2006, 08h01
  3. [debutant] parcours en profondeur arbre n-aire
    Par tx dans le forum Langage
    Réponses: 1
    Dernier message: 15/02/2006, 03h56
  4. construire un arbre n-aire
    Par emidelphi77 dans le forum Langage
    Réponses: 2
    Dernier message: 11/10/2005, 18h47
  5. arbre n-aire delete
    Par Fry dans le forum C++
    Réponses: 13
    Dernier message: 19/10/2004, 21h22

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