我试图在C中添加一个新节点到链表的末尾,但是我的代码有问题。
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node *next;
};
struct node *head = NULL;
void add_node(int data) {
struct node *new_node = malloc(sizeof(struct node));
new_node->data = data;
new_node->next = NULL;
if (head == NULL) {
head = new_node;
} else {
struct node *current = head;
while (current->next != NULL) {
current = current->next;
}
current->next = new_node;
}
int *x = NULL;
*x = 5;
}
int main() {
add_node(5);
return 0;
}
然而,当我试图运行这段代码时,我遇到了一个分段错误。有人能帮我找出问题出在哪里吗?我试着通过添加print语句来调试代码,但我不确定问题出在哪里。我还试着使用malloc仔细检查我是否正确地为新节点分配了内存。
1条答案
按热度按时间hc2pp10m1#
在更新后的代码中,您需要遵从之前设置为NULL的指针
x
。删除垃圾代码,或者如果您必须让x
指向一个整数:我建议您沿着以下方式消除全局变量: