線形リストを作り、そのリストの内容をすべて表示させるlistPrint関数を作ったのですが、30,20,10と表示したいところが40,40,40となってしまいました。
色々調べておそらくprintf関数の引数がおかしいのかなと思います。
なにが間違えているか教えていただけませんか?
正しいソースコードは自分で考えて書きたいのでヒントだけ教えてもらいたいです.
#include <stdlib.h> #include <stdio.h> typedef struct s_list { struct s_list *next; void *data; } t_list; t_list *ft_create_elem(void *data) { t_list *list; list = (t_list*)malloc(sizeof(t_list)); //listにt_listのサイズを確保 if (list == NULL) { return NULL; } else { list->next = NULL; list->data = data; return list; } } void ft_list_push_front(t_list **begin_list, void *data) { t_list *ndptr; ndptr = ft_create_elem(data); if (ndptr != NULL) { ndptr->next = *begin_list; *begin_list = ndptr; } } void listPrint(t_list *list) { while (list != NULL) { printf("%d\n",*(int*)list->data); list = list->next; } } int main() { t_list *list; int i; i = 10; list = NULL; while (i <= 30) { ft_list_push_front(&list,&i); i += 10; } listPrint(list); return 0; }
回答1件
あなたの回答
tips
プレビュー