Bonjour a tous, j'aimerais faire une liste générique, mais j'ai un peu de mal...
Je voudrais instancier cette liste generique en liste de caractere.
J'ai une fonction ajouter_fin, qui ajoute un element en fin de liste:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 typedef struct t_Liste{ void * Ptr_val; // pointeur sur un type de valeur desire struct t_Liste* Suiv; // pointeur sur element suivant } t_Liste;
et mon 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
16
17
18
19
20
21
22
23
24
25
26 /* ajoute un pointeur sur valeur en fin de liste*/ int Ajouter_fin(t_Liste * L, void * Ptr_valeur) { t_Liste * temp; // attribuer de l'espace temp=(t_Liste*)malloc(sizeof(struct t_Liste)); if (L == NULL) /* si liste vide*/ { L=temp; L->Ptr_val = Ptr_valeur; //pointer valeur L->Suiv = NULL; //fin de liste } else { temp=L; while (temp->Suiv != NULL) { temp=temp->Suiv; } /*on est arrive a la fin de la liste*/ temp->Ptr_val=Ptr_valeur; temp->Suiv=NULL; } return 0; }
Les soucis: - ma liste est toujours vide!
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 int main() { struct t_Liste * Liste_char; Liste_char = (t_Liste*)malloc(sizeof(struct t_Liste)); Liste_char = NULL; char vide; //pour vider le saut ligne du buffer char * c; c=(char *)malloc(sizeof(char)); printf("Taper le caractere a ajouter: \n"); *c=getchar(); while (*c != '0') { vide=getchar(); Ajouter_fin(Liste_char,c); c=(char *)malloc(sizeof(char)); printf("Taper le caractere a ajouter: \n"); *c=getchar(); } printf("debut: %p\n",Liste_char->Ptr_val); printf("Affichage de la liste\n"); Afficher_liste(Liste_char); system("pause"); }
- afficher un type donné (ici caractere) alors que en generique j'ai <void * ptr_val> comme valeur de l'element de la liste?
Si quelqu'un peut m'aider svp ? D'avance merci !
a bientot
Partager