私はあまりにも新しいデータ構造で、実際に私は昨日始めました。ここでは、コードは次のようになります。リンクリスト(追加と印刷)に問題がある
#include <stdio.h>
#include <stdlib.h>
struct node
{
int x;
node *next;
};
void addToList(node *r, int a);
void printList(node *r);
int main()
{
node *root;
root = NULL;
for (int i = 0; i < 5; i++)
{
int a;
scanf("%d", &a);
addToList(root, a);
}
printList(root);
return 0;
}
void addToList(node *r, int a)
{
while (r != NULL)
r = r -> next;
r = (node *)malloc(sizeof(node));
r -> x = a;
r -> next = NULL;
}
void printList(node *r)
{
while (r != NULL)
{
printf("%d ", r -> x);
r = r -> next;
}
printf("\n");
}
私はプログラムがリストに新しい5つの要素を取得し、それらを印刷し期待しています。しかし、プログラムの終わりには何も起こっていません。私の欠点は何ですか?
それは 'ボイドaddToList(ノード* R、INT A){ 一方でなければならない(!R->次= NULL) R = R - >次に、 r-> next =(node *)malloc(sizeof(node)); r-> next-> x = a; r-> next-> next = NULL; }「 – roottraveller
申し訳ありませんが動作しませんでした。 – Atreidex
最初の要素を定義した後に機能します。常に最初の要素を定義する必要がありますか?完全に空のリストのための方法はありませんか? – Atreidex