下面是我的节点结构声明和我在后台插入的功能。在 main 中,我声明了一个头节点并将其指向 NULL。然后我调用该函数,并尝试打印出第一个节点的值,但我的程序停止了。我仍然无法弄清楚出了什么问题。
typedef struct node {
int val;
struct node *next;
} NODE;
void insert_back(NODE *head, int val) {
NODE *new = malloc(sizeof(NODE));
new->val = val;
new->next = NULL;
if (head == NULL)
head = new;
else {
NODE *p = head;
while (p->next != NULL)
p = p->next;
p->next = new;
}
}
int main() {
NODE *head = NULL;
insert_back(head, 2);
printf("%d", head->val);
}
最佳答案
当您退出函数时,您在 insert_back 中分配的指针会丢失。为了使其正常工作,您的 insert_back 应该是指针对指针。
typedef struct node {
int val;
struct node *next;
} NODE;
void insert_back(NODE **head, int val) {
NODE *new = malloc(sizeof(NODE));
new->val = val;
new->next = NULL;
if (*head == NULL)
*head = new;
else {
NODE *p = *head;
while (p->next != NULL)
p = p->next;
p->next = new;
}
}
int main() {
NODE *head = NULL;
insert_back(&head, 2);
printf("%d", head->val);
}
关于c - 在C中单链的后面插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22071600/