Bonjour,
Je bloque sur un exercice (pourtant assez facile) d'ajout d'un élément à une liste chainée. Concrètement je dois faire passer le premier élément d'une liste A à une liste B.
Voici mon code :
la fonction decal(t_push **list_a) fonctionne sans problème (elle supprime l'élément de la liste A passé dans la liste B).
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 t_push *put_in_b(t_push **list_a, t_push **list_b) { t_push *lptr; if ((lptr = malloc(sizeof(t_push))) == NULL) return (NULL); if (lptr != NULL) { lptr->data = (*list_a)->data; lptr->prev = NULL; if ((*list_b)->tail == NULL) { lptr->next = NULL; (*list_b)->head = lptr; (*list_b)->tail = lptr; } else { (*list_b)->head->prev = lptr; lptr->next = (*list_b)->head; (*list_b)->head = lptr; } (*list_b)->data = lptr->data; (*list_b)->len++; } decal(list_a); }
Mon souci est que ma fonction put_in_b, plutôt que de stocker les éléments mis dans la liste B au fur et à mesure, remplace à chaque fois le premier élément ce qui fait que ce genre d'appel :
list_a : 3 5 4 6
list_b :
put_in_b(&list_a, &list_b);
put_in_b(&list_a, &list_b);
put_in_b(&list_a, &list_b);
me donne : my_show_list(list_b) = 4 alors que je veux : my_show_list(list_b) = 4 5 3
Je ne sais pas si je suis très claire,
merci d'avance
Partager