我想建立一个链表,但由于某种原因我的头没有正确更新。下面是我的代码,我打算不能工作的片段:设置指向结构的指针等于指向函数返回的结构的另一个指针?
typedef struct node {
int data;
struct node *next;
} * node;
node create_node(int data) {
node to_return = calloc(1, sizeof(struct node));
to_return->data = data;
to_return->next = NULL;
return to_return;
}
int insert(int data, node head) {
if (head == NULL) {
head = create_node(data);
}
.
.
.
}
return 1;
}
int main(int argc, char **argv) {
node head = NULL;
insert(1, head);
printf("head->data: %d", head->data);
}
在这个例子中,我试图创建链接列表的使用insert()的第一个节点。但是,我收到SEG错误,这意味着create_node()返回的to_return节点指针没有正确设置到insert()中的节点头部。我在这里错过了什么?
编辑:我重复检查和头正在插入()正确设置。由于某些原因,更改不会持续
我很抱歉,但我仍然困惑。我试图在insert()中打印head-> data,并且我得到正确的值,但是由于某些原因,当程序退出函数insert() – YSA
时,更改不会持久。还忘记提及该节点是指向一个结构。 – YSA
**从来没有**''typedef'指针! – Olaf