gpt4 book ai didi

c - 在这个函数中正确的指针没有返回到调用函数

转载 作者:行者123 更新时间:2023-12-04 10:59:03 25 4
gpt4 key购买 nike

问题是当我在删除节点后打印列表时,打印函数打印 0 代替删除的节点.....但我希望它不打印任何内容。

// the function call is delete_from_key(&head,i);
//node is struct linked_list
void delete_from_key(node *head, int key)
{
node *new, *temp;
if(head == NULL)
{
printf("nothing to delete . the list is empty.\n");
return;
}
else if(head->num == key)
{
temp=head;
head=temp->next;
free(temp);
return;
}
new=search_key(head, key);//search_key returns pointer node holding the key.
if(new != NULL)
{
temp = new;
new = new->next;
free(temp);
return;
}
}

例子:

列表是1->2->3->4->5->
如果我用键 2 调用这个函数
预期的输出是 1-> 3-> 4-> 5->
相反,实际输出是 1-> 0-> 3-> 4-> 5->

最佳答案

您需要更新前一个节点的 next 以及它的 next 正在被删除。

prev_node=search_key(head, key);//search_key returns pointer to the node just before the node holding the key.

if(prev_node!= NULL)
{
// prev_node->next is the one that needs to be deleted
temp = prev_node->next;

//Make the prev node point to the next node of the one that's getting deleted
prev_node->next = temp->next;

free(temp);
return;
}

关于c - 在这个函数中正确的指针没有返回到调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55350648/

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