problème liste simplement chainée
bonjour,
J'ai un soucis lorsque je dois ajouter un element à une liste un peu complexe. Voici mes structures :
Code:
1 2 3 4 5 6 7 8 9 10
| struct reader_send_list{
struct shm_data *data; /**< pointer to the first shm_data of the current list */
struct reader_send_list *next; /**< pointer to the next list */
};
struct reader_printhead{
uint8_t ph_id;
struct reader_send_list *next_frame; /**< pointer to the next frame to send list */
struct reader_printhead *next_printhead; /**< pointer to the next printhead */
}; |
La structure printhead permet de chainer des éléments printhead comme elle mais contient un pointeur vers une structure reader_send_list. La structure reader_send_list est aussi une liste et je n'arrive pas à ajouter une élément à cette chaine au travers du pointeur vers la structure printhead.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
extern void reader_append_send_list(struct reader_printhead *p_printhead)
{
struct reader_send_list *p_new_send_list = malloc(sizeof *p_new_send_list);
if((p_printhead->next_frame != NULL) && (p_new_send_list != NULL))
{
p_new_send_list->data = NULL;
p_new_send_list->next = NULL;
struct reader_send_list *current_list = p_printhead->next_frame;
while(current_list != NULL)
{
printf("current_list=%p\n",current_list);
current_list = current_list->next;
}
printf(" NULL = current_list=%p\n",current_list);
current_list = p_new_send_list;
printf("current_list=%p\n",current_list);
}
} |
et lorsque j'appelle ma fonction :
Code:
1 2 3 4
|
printf("t_ph[0]->next_frame->next = %p\n",t_ph[0]->next_frame->next);
reader_append_send_list(t_ph[0]);
printf("t_ph[0]->next_frame->next = %p\n",t_ph[0]->next_frame->next); |
Je précise que lors de l'initialisation de la structure printhead, le pointeur next_frame ne pointe pas vers null mais est attaché a une struct reader_send_list. mais je ne comprend pas mon erreur.
merci de votre aide