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; }
Partager