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 :

Problème de liste chainée


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut Problème de liste chainée
    Bonjour,

    J'essai de comprendre le fonctionnement des listes chainées (simple pour commencer). Malgrès les tutoriels que j'ai pu trouvé sur ce site, je n'arrive toujours pas à faire une liste chainée qui fonctionne..

    En fait apparement la liste est bien remplie, mais je n'arrive pas à la relire.
    Pourriez vous me dire quelle est mon erreur ?

    Merci

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    #include <stdio.h>                                                     
    #include <stdlib.h>                                                    
    #include <string.h>                                                    
    #include <sys/types.h>                                                 
    #include <errno.h>                                                     
    /*------------------ liste chainee ----------------------------------*/
    typedef struct Event sEvent;                                           
    struct Event {                                                         
      char value[10];                                                      
      struct Event *pnext;                                                 
    };                                                                     
    typedef sEvent *ListEvent;                                             
    /*---------------------- fonction ------------------------------------*/
    /* Ajout d'un event dans la liste                                     */
     ListEvent AddEvent(ListEvent List, char *val) {                        
       ListEvent NewEvent = malloc(sizeof(sEvent));                         
       if (NewEvent != NULL) {                        /* alloc memoire OK */
          strcpy(NewEvent->value,val);                                      
          printf("Event:%s\n",NewEvent->value);                             
          NewEvent->pnext = List;                                           
          return List;                                                      
       } else {                                                             
          return NULL;                        /* pb memoire retourne NULL */
       }                                                                    
     }    
    /* lecture de la liste */
      void ViewEvent(ListEvent List) {    
       sEvent *tmp=List;                 
       while (tmp != NULL) {             
          printf("val:%s\n",tmp->value); 
          tmp = tmp->pnext;              
       }                                 
     }                                   
        /*-------------------------- MAIN ------------------------------------*/
    int main( int argc,char *argv[]) {                                      
     
      ListEvent List = NULL;                                                
      char *pch=NULL;                                                  
      int  a=0;                                                         
      char data[]="DATA1:DATA2:DATA3:DATA4";                                
      char msgerror[50];                                                    
     
      memset(msgerror,'\0',50);                                             
     
       pch = strtok(data,":");        
      while (pch != NULL) {          
         List = AddEvent(List,pch);  
         pch = strtok(NULL,":");     
      }                              
      ViewEvent(List);               
     return 0;                       
    }

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     ListEvent AddEvent(ListEvent List, char *val) {                        
       ListEvent NewEvent = malloc(sizeof(sEvent));                         
    ...                        
          NewEvent->pnext = List;                                           
          return List;
    ....
    Apparemment, d'après le l'insertion est faite en tête de liste et conséquemment, la tête de liste doit changer.
    On attend donc plutôt

  3. #3
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    Effectivement, ça fonctionne mieux comme ça.
    Lorsque l'on à la réponse cela devient évidant.


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

Discussions similaires

  1. Problème free() liste chainée
    Par samzorINCA dans le forum Débuter
    Réponses: 28
    Dernier message: 19/05/2010, 10h02
  2. Problème fabrication liste chainée
    Par scary dans le forum Débuter
    Réponses: 2
    Dernier message: 10/03/2009, 12h04
  3. Problème de listes chainées
    Par line86 dans le forum C
    Réponses: 5
    Dernier message: 20/04/2008, 10h30
  4. Probléme avec Liste Chainée
    Par Lucas42 dans le forum C
    Réponses: 6
    Dernier message: 24/01/2008, 20h15
  5. un probléme de liste chainé simple
    Par seifdev dans le forum C
    Réponses: 15
    Dernier message: 02/04/2007, 16h36

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