Ajouter un élément à une liste chainée
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 :
Code:
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);
} |
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).
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