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 :

question liste chainée


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Octobre 2014
    Messages : 18
    Par défaut question liste chainée
    voici le code dans un cours sur developpez.com
    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
    typedef struct pile
            {
                    int valeur;
                    struct pile *prec;
            } pile ;
        pile *MaPile = NULL;
    void Push(pile **p, int Val)
    {
            pile *element = malloc(sizeof(pile));
            if(!element) exit(EXIT_FAILURE);     /* Si l'allocation a échouée. */
            element->valeur = Val;
            element->prec = *p;
            *p = element;       /* Le pointeur pointe sur le dernier élément. */
    }
     
           // dans le main
     pile *MaPile = NULL;   /* Impératif de l'initialiser à NULL */
     Push(&MaPile, 10);
    ma question ici sur l'argument de la fonction push (**p) , pourquoi deux étoile alors que l'on utilsie à l'intérieur de la fonction juste *p ; et pourquoi une seul étoile ne marche pas vu que l'on veut l'adresse que contient ce pointeur donc on la passe par référence donc comme argument dans push(*p) au lieu de (**p) ou comme copie push(pile p) vu qu'elle contient l'adresse que l'on veut insérer dans la strucuture que l'on va créer . jespère que vous compreniez ce que je veux dire .

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 833
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 833
    Billets dans le blog
    1
    Par défaut
    Bonjour

    T'inquiète pas, on comprend parfaitement ce que tu veux dire.

    Donc ta question est "pourquoi deux étoiles". La réponse est toute simple: parce que la fonction peut avoir à modifier l'élément qu'elle reçoit. Or comme cet élément et déjà l'adresse d'un maillon de ta liste, si la fonction doit modifier cette adresse il faut alors lui passer l'adresse de cette adresse.

    En C, la règle est toujours la même: si une fonction doit modifier un truc qu'elle reçoit, il faut alors lui passer l'adresse de ce truc et la fonction stockera alors cette adresse dans un "truc étoile". Si maintenant "truc" est déjà un type contenant une étoile dans sa description, tu auras alors deux étoiles dans le paramètre de la fonction.

    Ceci étant dit, je ne sais pas trop où tu as trouvé ce cours mais il ne me semble pas faire partie des meilleurs cours qu'on ait. Les types créés ne sont pas standardisés (en général on nomme un type "t_xxx" pour justement bien faire ressortir le fait que ce soit un "type") et surtout il n'y a pas de type dédié à la liste elle-même alors que cela apporte beaucoup d'avantages d'en créer un (dont le premier est qu'avec un type pour la liste, on n'a plus à s'embêter avec ces doubles étoiles vu que le type permet d'accéder à ses éléments de façon directe). Ici (http://www.developpez.net/forums/d14...e/#post8056055) tu trouveras un exemple de liste chainée qui ne va pas plus loin que les étoiles simples et que je trouve plus simple à appréhender...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Question sur les listes chainées.
    Par deubelte dans le forum C++
    Réponses: 15
    Dernier message: 18/03/2010, 13h29
  2. Listes chaines, quelques questions de pratique
    Par student_ dans le forum Débuter
    Réponses: 3
    Dernier message: 16/01/2010, 00h16
  3. question liste simplement chainée
    Par american dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 15/03/2009, 21h45
  4. Listes chainées questions
    Par Klaine dans le forum C
    Réponses: 16
    Dernier message: 10/04/2008, 19h23
  5. des questions sur les listes chainées
    Par hunter99 dans le forum C
    Réponses: 13
    Dernier message: 05/12/2006, 22h51

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