gpt4 book ai didi

c - 向链表添加元素时,为什么不使用指向指针的指针?

转载 作者:行者123 更新时间:2023-12-04 05:11:38 27 4
gpt4 key购买 nike

我见过这个问题:

它使用以下代码在列表中添加一个元素:C linked list inserting node at the end

int addNodeBottom(int val, node *head){

//create new node
node *newNode = (node*)malloc(sizeof(node));

if(newNode == NULL){
fprintf(stderr, "Unable to allocate memory for new node\n");
exit(-1);
}

newNode->value = val;
newNode->next = NULL; // Change 1

//check for first insertion
if(head->next == NULL){
head->next = newNode;
printf("added at beginning\n");
}

else
{
//else loop through the list and find the last
//node, insert next to it
node *current = head;
while (true) { // Change 2
if(current->next == NULL)
{
current->next = newNode;
printf("added later\n");
break; // Change 3
}
current = current->next;
};
}
return 0;
}

为什么 head 作为节点传递 *head而不是 node **head如果我们要在内部更改它并且希望将更改传播到函数外部?我在这里缺少什么?

最佳答案

head永远不会在此函数中直接修改。只有 head->next被分配给另一个值。因此,您不需要使用指向指针的指针。

关于c - 向链表添加元素时,为什么不使用指向指针的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14859930/

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