我試圖使用鏈表作爲一種方式來增強我對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