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 :

les listes en c


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 119
    Par défaut les listes en c
    salut tout le monde,
    je voulais créer une liste de personnes, mais j'ai toujours un problème d'insertion,
    voila un petit exemple :

    code c:
    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
    24
    25
    26
    27
     
    #include<stdio.h>
    #include<stdlib.h>
     
    typedef struct _liste
    {
        char nom[20];
        struct _liste *suivant;
        }liste;
     
    void inserer(liste *list,char *nom)
    {
        liste *maillon=(liste *)malloc(sizeof(liste));
        strcpy(maillon->nom,nom);
        maillon->suivant=NULL;
        list=maillon;
        printf("%s\n",list->nom);
     
        }
    int main()
    {
        liste *myliste=NULL;
        inserer(myliste,"abdess");
        if(myliste==NULL)
            printf("liste vide\n");
     
        }
    j'arrive pas à comprendre pour quoi lorsque j'appelle la fonction insérer ma liste reste vide !!même si j'ai effectuer un passage par adresse !!!!
    le pire est que au sein de la fonction insérer la liste (myliste )n'est pas vide.
    alors pour quoi l'est au sein de la fonction main !!!!!!!!!!!
    Merci de votre aide ...

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par switch1 Voir le message
    salut tout le monde,
    je voulais créer une liste de personnes, mais j'ai toujours un problème d'insertion,
    voila un petit exemple :

    code c:
    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
    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct _liste
    {
        char nom[20];
        struct _liste *suivant;
        }liste;
    
    void inserer(liste *list,char *nom)
    {
        liste *maillon=(liste *)malloc(sizeof(liste));
        strcpy(maillon->nom,nom);
        maillon->suivant=NULL;
        list=maillon;
        printf("%s\n",list->nom);
    
        }
    j'arrive pas à comprendre pour quoi lorsque j'appelle la fonction insérer ma liste reste vide !!même si j'ai effectuer un passage par adresse !!!!
    le pire est que au sein de la fonction insérer la liste (myliste )n'est pas vide.
    alors pour quoi l'est au sein de la fonction main !!!!!!!!!!!
    Merci de votre aide ...
    Qu'est-ce qu'on t'a appris à propos des fonctions et des variables ? Qu'une fonction qui doit modifier un élément extérieur doit recevoir l'adresse de cet élément.
    Tu veux que la fonction "inserer" modifie le pointeur "mylist" => il faut que cette fonction reçoive l'adresse de ce pointeur !!!

    Maintenant, si j'étais toi, je prendrais du temps pour bien poser les objets et les fonctions qui vont y accéder. C'est du temps perdu au départ mais ensuite, tu vas 10 fois plus vite pour la maintenance et l'évolution.

    Personnellement ta structure "liste" je la définirais une structure "elem" et je définirais une vraie structure liste me permettant de tenir la liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    typedef struct s_elem
    {
        char nom[20];
        struct s_elem *suivant;
    }t_elem;
     
    typedef struct {
        t_elem *first;
       // Eventuellement d'autres outils comme le nombre d'élément, l'élément courant, etc...
    }t_liste;
    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. petit soucis avec les listes
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/09/2005, 10h08
  2. [langage] probleme avec les listes dans des listes
    Par pqmoltonel dans le forum Langage
    Réponses: 7
    Dernier message: 27/04/2004, 12h32
  3. [LG]Les listes
    Par franck H dans le forum Langage
    Réponses: 2
    Dernier message: 16/01/2004, 15h15

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