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

Langage C++ Discussion :

Compréhension d'une structure


Sujet :

Langage C++

  1. #1
    Membre actif
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Points : 246
    Points
    246
    Par défaut Compréhension d'une structure
    Bonjour,

    Je suis en train de reprendre un code C++ dans lequel se trouvent des Structures pour le moins absconses...

    Est ce que quelqu'un pourrait me donner l'utilité de la structure Node dans l'exemple suivant? Cette structure n'est utilisée que dans les Init et Free.

    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
    struct	Node	
    {
    	struct	Node	*nextfree;
    };
     
    struct NodeArrayList
    {
    	struct	Node	* memory;
    	struct	NodeArrayList* next;
     
    };
     
    struct	Freelist	
    {
    	struct	Node	*head;
    	int		nodesize;
    };
    Evariste

  2. #2
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    Dans l'immédiat, je serais tenté de dire que la structure Node est incomplète ou mal faite. Un noeud vu dans un arbre binaire serait vu de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct Node {
         struct Node *droite;
         struct Node *gauche;
         int donnée; // j'ai mis un int ici mais ça peut tout à fait être autre chose
    }
    Dans un arbre non-binaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct Node {
         struct Node **noeuds; // le dernier élément est NULL
         int donnée; // j'ai mis un int ici mais ça peut tout à fait être autre chose
    }
    Dans une liste chaînée, ça serait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct Node {
         struct Node *suivant;
         struct Node *precedent; // dans le cas d'une liste doublement-chaînée
         int donnée; // encore une fois, ça pourrait tout à fait être autre chose
    }
    Dans une pile ça serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct Node {
         struct Node *top;
         int donnée; // pareil
    }
    Bref, tu vois où je veux en venir ? Il y a toujours des données dans un noeud en plus du "lien" vers un autre. La deuxième solution serait que le dernier noeud serait en fait un void* caster en struct Node* contenant lui-même le contenu désiré. Un peu farfelu mais je dis : pourquoi pas !

  3. #3
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    Sans élément de contexte, on serait tentés de dire que ces structures ne servent à rien. J'ai l'impression pourtant qu'elles servent à réserver/gérer de la mémoire, à voir les noms utilisés. Est-ce que l'espace réservé pourrait ensuite être utilisé avec des cast, ou de l'héritage? Ce n'est vraiment pas clair...

    Une chose me titille cependant: ce code est plutôt du C que du C++ (en particulier en C++ on utilise le mot clé struct uniquement dans la déclaration/définition, pas pour marquer le type. On écrirait donc Node* nextfree, plutôt que struct Node* nextfree, qui n'est admis que pour des raisons de compatibilité).

  4. #4
    Membre actif
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Points : 246
    Points
    246
    Par défaut
    J'ai l'impression que comme dit stendhal666, j'ai l'impression que c'est pour réserver de la mémoire, mais comme ce n'est plus touché entre les deux je ne comprends pas du tout...
    Et j'ai lu en commentaire que c'était un code en C migré en Cpp. y a certainement une astuce en c.
    Je passe le poste en résolu car vos réponses me confortent dans mon idée première.
    Merci a tous,

    Evariste

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

Discussions similaires

  1. sizeof() d'une structure
    Par tut dans le forum MFC
    Réponses: 12
    Dernier message: 29/08/2006, 18h21
  2. [Initialisation] Remplir une structure une fois
    Par Kimael dans le forum Langage
    Réponses: 14
    Dernier message: 08/06/2004, 15h33
  3. Comment mettre en place une structure 3 tiers.
    Par WOLO Laurent dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 27/07/2003, 22h01
  4. [toFAQ][socket] Envoi d'une structure
    Par julien20vt dans le forum C++
    Réponses: 15
    Dernier message: 23/04/2003, 15h47
  5. longueur d'une structure
    Par bohemianvirtual dans le forum C
    Réponses: 6
    Dernier message: 28/05/2002, 18h31

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