gpt4 book ai didi

c - 为什么这个函数不能成功插入一个节点到一个链表中?

转载 作者:太空宇宙 更新时间:2023-11-04 07:24:37 25 4
gpt4 key购买 nike

该函数本应将一个节点插入到链表中,但它有一个错误,插入的节点不会显示在链表中。错误在哪里?

int insert(struct Node *headList, int payload) {
struct Node *newNode;
newNode = malloc(sizeof(struct Node));
assert (newNode != NULL);
newNode->payload = payload;
newNode->next = headList;
headList = newNode;
return 0;
}

我很确定 Node *headList 是按值传递的,因为 headList 在这个函数之外不会改变,但我不确定如何解决这个问题.我是否需要指向指针或其他东西的指针?

最佳答案

这个函数修改这个指针指向的struct Node:

int insert(struct Node *headList, int payload) {
...
headList = newNode;
...
}

但是要修改指针本身,需要传递一个指针地址来初始化指针:

int insert(struct Node **headList, int payload) {
...
*headList = newNode; // <-- modifies the pointer itself
...
}

或者您可以使用返回值来处理这个问题,因为 return 0 似乎有点没用。

关于c - 为什么这个函数不能成功插入一个节点到一个链表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19338062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com