最近、構造体やノードについて学んだのですが以下の問題が解けなくて困っております
新しいノードをリストの最後に追加するように修正しなさい。このとき変数tailは使いません。リストの末尾のノードは次のプログラムで見つけることができます。
struct node *q;
q = head;
while(q->next != NULL) q = q->next;
なのですが途中まで考えたのですが思った通りに動かなくて困っています
例えば、
1
2
3
と入力したら
1
2
3
と出力されるようにしたいです
入力しても一つも出力されない状態です
以下の書きかけのプログラムで申し訳ないですが教えて頂けると幸いです
具体的には、リストの末尾に要素を追加、の後を教えてください
よろしくお願いします
#include <stdio.h>
#include <stdlib.h>
struct node {
int num;
struct node *next;
};
main()
{
struct node *head, *p, *q;
int x;
head = NULL;
while(scanf("%d",&x) != EOF) {
p = (struct node *)malloc(sizeof(struct node));
head ->num = x;
/* リストの末尾に要素を追加 */
}
/* リストの要素のnumの値を先頭から順に表示する */
head = p;
while(p) {
printf("%d\n",p->num);
p = p->next;
}
}