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 :

definition de type


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 84
    Par défaut definition de type
    Bonjour,

    pour représenter le type pile, j'ai dans mon cours:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef struct element { int valeur; struct element *lien;} Element;
    Juque-là ok. J'ai des difficultés à comprendre ceci:

    Cela veut-il dire que tout élément de type Pile sera un pointeur sur Element?

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Ca se lit:
    Le pointeur concerne donc Pile, et non Element.
    Pour résumer:
    struct element <=> Element <=> *Pile

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 84
    Par défaut
    j'ai pas bien compris:
    quelle forme aura un élément de type Pile?

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    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
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
     
     
    typedef struct element 
    {
    	int valeur;
    	struct element *lien;
    } Element;
     
    typedef Element *Pile;
     
    int main(void)
    {
    	Element premier = {42, NULL};
    	Pile laPile = &premier;
     
    	laPile->valeur = 666;
    	printf("Premier element de la pile : %d", premier.valeur);
     
    	return 0;
    }
    Ce code compile sans erreur avec gcc -Wall -Wextra.

    Une pile n'est autre que l'endroit où est le premier élément de cette pile. Une Pile est donc un pointeur sur un Element.

    La syntaxe de typedef est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef un_type_existant synonyme_du_type;

  5. #5
    Invité
    Invité(e)
    Par défaut
    En fait, ce que ce code fait, c'est qu'il crée une liste chaînée (http://fr.wikipedia.org/wiki/Liste_cha%C3%AEn%C3%A9e). Pour faire simple, c'est une suite où chaque élément est relié à l'élément suivant, jusqu'au dernier élément de la liste qui n'est relié à rien du tout. Les éléments de ta liste, ce sont les Element. Ils ont une valeur (int valeur), et le lien vers l'élément qui les suit dans la liste (Element *lien).
    Là-dessus, tu rajoutes Pile*. En fait, ta pile ne sera rien d'autre que le lien vers le premier élément de ta liste chaînée.

    Un exemple peut-être qui te paraîtra plus clair, c'est le parcours de la pile avec ajout d'un élément à la fin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //Avec une pile p initialisée comme il se doit
    Element *e;
    for(e = *p; e->lien != NULL; e = e->lien) {}
    //Arrivé ici, e est le dernier élément de la liste
    //On ajoute un nouvel élément à la suite
    Element *suivant = malloc(sizeof(Element));
    e->lien = suivant;
    suivant->valeur = 42;
    suivant->lien =  NULL;
    NB: Je n'ai pas compilé le code, il y aura peut-être deux-trois erreurs si tu le recopies tel quel

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 84
    Par défaut
    Ok j'ai tout compris.
    Merci à vous deux!

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

Discussions similaires

  1. Definition variable type objet
    Par Anduriel dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 04/12/2011, 12h48
  2. definition de type uint32_t
    Par pepito31 dans le forum Linux
    Réponses: 2
    Dernier message: 06/12/2010, 16h07
  3. [Fortran 90] Compilation, definition de type et autre
    Par Takeiteasy dans le forum Fortran
    Réponses: 4
    Dernier message: 17/05/2009, 01h19
  4. definition de type non reconnu par g++ ou erreur?
    Par harsh dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 09/06/2006, 01h42
  5. Réponses: 12
    Dernier message: 02/01/2006, 22h24

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