私はCでポインタの知識を蓄積する方法としてリンクリストを使用しようとしています。そこで小さな例を書きましたが、コンパイルするとエラーが発生しています。リンクされたリストは私の脳を曇らせています。私はこれをどのようにしなければならないのですか?
In function 'append_node':
error: request for member ‘next’ in something not a structure or union
構造体にアクセスする(または渡す)適切な方法は何ですか?
#include <stdio.h>
#include <stdlib.h>
struct node {
int val;
struct node *next;
};
static int append_node(int val, struct node **head) {
struct node *new_node;
new_node = (struct node *) malloc(sizeof(struct node));
new_node->val = val;
new_node->next = NULL
*(head)->next = new;
return 0;
}
int main() {
int i;
struct node *head;
struct node *curr;
head = NULL;
curr = (struct node *) malloc(sizeof(struct node));
for(i = 1; i <= 10; i++) {
append_node(i, &curr);
head = curr;
}
curr = head;
while(curr) {
printf("%d\n", curr->val);
curr = curr->next ;
}
return 0;
}
これまでに返信したすべての人に:1)新しいノードへのポインタは 'new_node'と呼ばれ、' new'ではありません。 2)新しいノードを '(* head) - > next'に代入すると、リストの残りの部分が削除されます(リークされます)。新しいノードを新しい頭にするというアイディアです。関数はノードへの_double_ポインタです – Rom