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 :

Sauriez-vous svp m'expliquer cette structure ?


Sujet :

C

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Sauriez-vous svp m'expliquer cette structure ?
    Bonjour tout le monde,

    Nous avons commencé un nouveau chapitre, les Piles.

    J'ai une structure qui a été créée mais je ne l'a comprends pas bien, sauriez-vous m'en dire plus svp ?

    Voici la structure en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    typedef long	DATA;
    
    //à quoi sert encore ce typedef ?
    
    typedef struct tagElementPile
    {
    	DATA				Donnee;
    	struct tagElementPile*		EnDessous;
    // Je crée ici un pointeur sur ma structure ?
    } TElementPile;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef struct tagElementPile
    // idem

    J'ai des livres de C qui sont malheureusement chez moi (je n'y suis pas pour le moment, donc impossible de les consulter).

    Merci d'avance pour votre aide so precious.

    beegees

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 607
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 607
    Points : 17 914
    Points
    17 914
    Billets dans le blog
    2
    Par défaut
    puisque tu es en train de créer une structure TElementPile, tu ne la connais pas encore

    Si donc tu veux créer un pointeur vers une structure de ce type DANS la définition de la structure, tu n'as que 2 solutions :

    • soit tu définis un pointeur void*, qu'il faudra ensuite caster à chaque utilisation

    • soit tu te sers de ce que fourni la norme C, c'est à dire un "tag", un nom QUI n'EST PAS LE NOM DE LA STRUCTURE UTILISABLE, mais un identifiant permettant en particulier au compilateur de savoir que lorsqu'il rencontre cela, il doit attendre la fin de la structure pour savoir ce qu'il a défini...

    Le premier typedef est un exemple, et défini une équivalence entre DATA et long.

    Le second typedef défini la structure...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Citation Envoyé par beegees Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    typedef long	DATA;
    
    //à quoi sert encore ce typedef ?
    //à définir un type, ici tu définis DATA comme étant un long
    
    typedef struct tagElementPile
    {
    	DATA				Donnee;
    	struct tagElementPile*		EnDessous;
    // Je crée ici un pointeur sur ma structure ?
    // oui c'est le principe de base d'une pile
    
    } TElementPile;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef struct tagElementPile
    // idem
    // tu définis un type struct tagElementPile, cela évite d'écrire quand tu déclares une variable de ce type, struct tagElementPile, dans ce cas tu n'auras qu'à écrire tagElementPile
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 432
    Points : 593
    Points
    593
    Par défaut
    Tu sais ce qu'est une liste chainée ? (C'est peut-être ça qui te bloque.)

  5. #5
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour à tous,

    Merci pour vos réponses qui m'ont bien aidé.

    Citation Envoyé par souviron34 Voir le message
    puisque tu es en train de créer une structure TElementPile, tu ne la connais pas encore

    Si donc tu veux créer un pointeur vers une structure de ce type DANS la définition de la structure, tu n'as que 2 solutions :

    • soit tu définis un pointeur void*, qu'il faudra ensuite caster à chaque utilisation

    • soit tu te sers de ce que fourni la norme C, c'est à dire un "tag", un nom QUI n'EST PAS LE NOM DE LA STRUCTURE UTILISABLE, mais un identifiant permettant en particulier au compilateur de savoir que lorsqu'il rencontre cela, il doit attendre la fin de la structure pour savoir ce qu'il a défini...

    Le premier typedef est un exemple, et défini une équivalence entre DATA et long.

    Le second typedef défini la structure...
    Merci pour ta réponse qui est très claire et très importante pour moi. Merci encore.

    Citation Envoyé par AristoKrate Voir le message
    Tu sais ce qu'est une liste chainée ? (C'est peut-être ça qui te bloque.)

    Est-ce qu'une pile est une liste chaînée ?

    On a commencé les piles et on va apprendre les files ce lundi.

    Connais-tu un bon site qui explique tout cela très clairement ?

    Merci pour tout.

    beegees

  6. #6
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut


    Merci pour ta réponse qui m'a bien aidé.

    beegees

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 432
    Points : 593
    Points
    593
    Par défaut
    Ca ça m'a l'air pas mal.

    Une pile est soit sous forme d'un tableau, soit sous forme d'une liste chainée. Et au final c'est les fonctions (comme par exemple Empiler(), Depiler(), etc) qui font d'une liste chainée une pile. (Je sais pas si je t'ai bien aidé avec cette explication ^^)

  8. #8
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par AristoKrate Voir le message
    Ca ça m'a l'air pas mal.

    Un pile est soit sous forme d'un tableau, soit sous forme d'une liste chainée. Et au final c'est les fonctions (comme par exemple Empiler(), Depiler(), etc) qui font d'une liste chainée un pile. (Je sais pas si je t'ai bien aidé avec cette explication ^^)
    Un super grand merci pour ton lien et pour ton explication.

    Donc si je comprends bien, le principe des piles et des listes chaînées est le même mais on peut différencier les deux par rapport aux fonctions utilisées ?

    Quand tu parles de tableau, nous avons utilisé l'exemple des assiettes, s'est le principe des tableaux cela ?

    Merci encore.

    beegees

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 40
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par beegees Voir le message
    Donc si je comprends bien, le principe des piles et des listes chaînées est le même mais on peut différencier les deux par rapport aux fonctions utilisées ?
    beegees
    c'est pas seulement les fonctions qui font la différence entre les deux, les piles ne sont que des cas particuliers de listes chaînées,elles fonctionnent en mode LIFO(Last In First Out) "dont l'exemple des assiettes" càd que les éléments ne peuvent être ajoutés et supprimés qu'en fin de liste.Alors que pour les listes simplement chaînées tu peux ajouter ou supprimer dans n'importe quelle position(t'as le choix).
    Citation Envoyé par beegees Voir le message
    Quand tu parles de tableau, nous avons utilisé l'exemple des assiettes, s'est le principe des tableaux cela ?
    l'exemple des assiettes est le principe des piles en général (et pas seulement de l'utilisation des tableau dans les piles).
    en plus la notion des tableau dans les piles est plus simple que celle des listes, pourtant ils (càd les tableaux) sont déconseillés car pour les utiliser on déclare des variables globales pour en savoir plus http://www.developpez.net/forums/sho...d.php?t=481054

  10. #10
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour smpinf,

    Merci pour tes explications très claires et très utiles.

    J'ai appris beaucoup grâce à toi.

    Bon fin de WE.

    beegees

Discussions similaires

  1. Réponses: 13
    Dernier message: 07/01/2009, 16h02
  2. Sauriez-vous svp m'expliquer cette requête JOIN SVP ?
    Par beegees dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/12/2008, 15h17
  3. [DOM] Sauriez-vous m'expliquer ce script svp ?
    Par beegees dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/10/2008, 21h36
  4. Réponses: 4
    Dernier message: 09/06/2008, 23h19
  5. Réponses: 10
    Dernier message: 18/05/2008, 18h23

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