Partage
  • Partager sur Facebook
  • Partager sur Twitter

structure d'une liste

compréhension de la forme

Sujet résolu
    11 avril 2021 à 15:21:03

    Bonjour,

    Je suis toujours bloqué sur le chapitre des liste chaîné.

    Mon probléme est le suivant :

    Je n'arrive pas à saisir le forme d'une liste chaîne en progr.

    Typedef struc element element;
    struct element{
    	
    	int data;
    	element *next;
    
    };
    
    typedef Liste Liste;
    struct Liste{
    	element *tête;	
    
    };

    La signification d'une liste chaîne avec ces deux strucutres:

    1) On créer une structure "Element" qui permettra d'avoir en mémoire une case qui contiendra la valeur de la case(data) et une autre case qui permettre de stocker l'adresse de l'"Element " suivant (next).

    2) La structure Liste : elle a pour objectif de stocker la tête la liste,à l'aide du pointeur "tête".

    Mes problème de compréhension sont les suivant :

    -on dit que le pointeur next pointe sur l’élément suivant mais ce qui me trouble que le type de next est element donc il point sur le struct element est pas sur l’élément suivant. (je pense que mon  incompréhension vient de ce que qui ce passe en mémoire).

    -Element *tête : il va pointe sur le même endroit que element *next. comment la structure va gérer ces deux pointeurs ?

    Merci de votre aide

    • Partager sur Facebook
    • Partager sur Twitter
      11 avril 2021 à 17:04:00

      IbBk a écrit:

      on dit que le pointeur next pointe sur l’élément suivant mais ce qui me trouble que le type de next est element donc il point sur le struct element est pas sur l’élément suivant. 

      Tu mélanges type et variable. Un pointeur ne peux pointer que sur une variable pas sur un type ! Dans une liste chaînée element et element suivant ont le même type, mais ce sont deux éléments (variable) distincte.
      • Partager sur Facebook
      • Partager sur Twitter
        11 avril 2021 à 17:45:45

        Et avec un dessin

        Tu vois bien qu'une liste peut avoir plein d'éléments qui sont tous du type Element. La variable ma_liste qui a le type Liste est encadrée de rouge.

        -
        Edité par Dalfab 11 avril 2021 à 17:49:25

        • Partager sur Facebook
        • Partager sur Twitter

        En recherche d'emploi.

          11 avril 2021 à 17:52:27

          La ligne

          Typedef struct element element;

          dit que « struct element » se nommera désormais « element » (tout court).

          Du coup, quand tu dis :

          IbBk a écrit:

          donc il point sur le struct element est pas sur l’élément suivant.

          cela est équivalent à :

          « donc il pointe sur l'élément suivant et pas sur l'élément suivant. »

          Du coup je ne comprends pas ce que tu ne comprends pas... ;)

          -
          Edité par robun 11 avril 2021 à 18:15:21

          • Partager sur Facebook
          • Partager sur Twitter
            11 avril 2021 à 17:58:56

            Pour reprendre un peu ce que rouloude a dit:
            next est de type element, ici la variable est next, pas element.
            Quand tu crée un nouvel élément, tu mets next à NULL car tu ne sais pas encore ver quoi ça va pointer.
            Ensuite, dépendamment du type de liste, next va pointer vers un autre élément du même type.
            Pour ta structure Liste, tu devrais la créer avant tout élément avec un pointeur tete égal à NULL car la liste est vide.
            Normalement, on fournit un pointeur vers un élément de type Liste quand on veut ajouter un élément
            tete pourra être modifié en fonction du type de liste ou d'action sur cette liste.
            Je ne sais pas si j'ai été plus clair que rouloude. :)
            • Partager sur Facebook
            • Partager sur Twitter

            Le Tout est souvent plus grand que la somme de ses parties.

            structure d'une liste

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown