Bonjour ,
j'ai un petit probleme concernant les listes chainees . au debut j'ai cree une structure generique qui contient un pointeur vers la prochaine structure , tous ce passais bien jusqu'a ce que je cree une seconde structure qui contient un pointeur du premier type de structure au debut puis un tableau de char et un int . ( elle herite de la premiere )
le but etant de creer 4 structure et de les chainer .
j'ai cree donc 4 structure , je les ai remplie . puis je les ai chainee .
et quand j'ai voulu les lire les unes a la suite des autres . le tableau de char est correct par contre sa m'affiche des nombres bizarres alors que j'avais entre 1 2 3 4 .
voila le code qui est tres tres simple , facile a comprendre .
header liste.h
source liste.cpp
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 #ifndef LISTES_H_INCLUDED #define LISTES_H_INCLUDED typedef struct element* Pelement; typedef struct element{ int nombre; Pelement suivant; }element; typedef struct { Pelement premier; Pelement dernier; Pelement courant; }liste; /** initialise la liste **/ void initliste(liste *l); /*** Fonctions d'insertion **/ void insererentetedeliste(liste* l,Pelement nouveau); #endif
et le main .
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 #include<stdlib.h> #include"liste.h" void initliste(liste *l){ l->premier = NULL; l->dernier = NULL; l->courant = NULL; } /*****************************************************/ void insererentetedeliste(liste* l,Pelement nouveau){ nouveau->suivant = l->premier; l->premier = nouveau; if( l->dernier == NULL ) l->dernier = nouveau; }
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"liste.h" typedef struct { Pelement suivant; int nombre; char nom[20]; }elt; int main(void) { liste L1,L2; liste *pl1 = &L1,*pl2=&L2; elt *a,*b,*c,*d,*x; a = (elt*)malloc(sizeof(elt)); b = (elt*)malloc(sizeof(elt)); c = (elt*)malloc(sizeof(elt)); d = (elt*)malloc(sizeof(elt)); a->nombre = 1; strcpy(a->nom,"A"); b->nombre = 2; strcpy(b->nom,"B"); c->nombre = 3; strcpy(c->nom,"C"); d->nombre = 4; strcpy(d->nom,"D"); initliste(pl1); insererentetedeliste(pl1,(Pelement)a); insererentetedeliste(pl1,(Pelement)b); insererentetedeliste(pl1,(Pelement)c); insererentetedeliste(pl1,(Pelement)d); pl1->courant = pl1->premier; while( pl1->courant != pl1->dernier->suivant ){ x = (elt*)(pl1->courant ); printf("\n%s ",x->nom); printf("%d ",x->nombre); pl1->courant = pl1->courant->suivant; } system("PAUSE"); return 0; }
voila merci de m'aider j'ai bloque toute l'aprem dessus et j'ai pas compris d'ou pourrais bien venir le probleme ? est ce de moi ? ou du langage ?
Partager