gpt4 book ai didi

c - free(temp) 指针释放链表中的头指针-如何保留指向列表原点的指针

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

我有一个问题,如果我想从链表中删除一个节点,我会这样做:假设:Head 指向第一个节点。

   deleteFirstNode(struct node * head)
{
struct node* temp=head;//this line
temp->next=head->next->next;
temp->data=head->next->data;
free(head);
head=temp;
}

1) 这会删除第一个节点吗?

2) 如果是这样,当我释放 head 时,它不会也释放临时指针吗?因为 temp 和 head 都指向这一行中的相同位置(请参阅代码中“这一行”中的注释)。如果以上都为真,我将如何保留指向列表开头的保留指针。 ?非常感谢。

最佳答案

我会传递一个双指针并在这些行上做一些事情

deleteFirstNode(struct node ** head) {
struct node* temp= *head;
*head = temp->next;
free(temp);
}

关于c - free(temp) 指针释放链表中的头指针-如何保留指向列表原点的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9799107/

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