C 链表让我的大脑变得一团糟。我应该怎么做?
我试图用链表来增强我对C语言中指针的了解。因此,我写了一个小例子,但当我编译它时,我发现一个错误,我似乎无法理解:C 链表让我的大脑变得一团糟。我应该怎么做?,c,pointers,linked-list,pass-by-reference,C,Pointers,Linked List,Pass By Reference,我试图用链表来增强我对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 { in
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;
}
#包括
#包括
结构节点{
int-val;
结构节点*下一步;
};
静态int-append_节点(int-val,结构节点**head){
结构节点*新节点;
新节点=(结构节点*)malloc(sizeof(结构节点));
新建节点->val=val;
新建节点->下一步=空
*(head)->next=新建;
返回0;
}
int main(){
int i;
结构节点*头部;
结构节点*curr;
head=NULL;
curr=(结构节点*)malloc(sizeof(结构节点));
对于(i=1;i val);
当前=当前->下一步;
}
返回0;
}
任何帮助都会很好 我可以假定您在这条线上得到了错误吗
*(head)->next = new;
我认为你需要做一个小小的改变:
(*head)->next = new;
因为head
是指向指针的指针,所以当您取消引用它时,您会得到一个指针。下一个操作该指针。有两个问题:
缺少一个代码>在
new->next = NULL
改变
*(head)->next = new;
到
请尝试以下方法:
(*head)->next = new_node;
将**head
转到*head
,然后召集成员。对所有回复者:1)指向新节点的指针称为new\u node
,而不是new
。2) 通过将新节点分配给(*head)->next
,列表的其余部分将被剔除(并泄漏):其想法是让新节点成为新的head,这就是为什么函数的参数是指向节点的双指针
(*head)->next = new_node;