gpt4 book ai didi

c - 为什么这里用**head而不是*head?

转载 作者:行者123 更新时间:2023-11-30 20:54:36 25 4
gpt4 key购买 nike

我知道指针是如何工作的。

我用这种方式做了类似的问题

deleteNode(struct node *head_ref, int key);

正在工作,@这里http://quiz.geeksforgeeks.org/linked-list-set-3-deleting-node/他们已经使用了

deleteNode(struct node **head_ref, int key);

这也是正确的,但有理由这样做,第一个在任何情况下都会失败还是不好等。

struct linked_list *deleteNode(struct linked_list *head, int key )
{
struct linked_list *prevNode,*current,*temp;

if( head==NULL)
return head;


if(head->data==key)
{
if(head->next==NULL)

{ free(head);
return NULL;
}

else
temp=head->next;

free(head);
return temp;

}
prevNode= head;
current=head->next;


printf("\n %d\n",(current->data));

while((current!=NULL) && (current->data!=key))
{ printf("\n here");

prevNode= current;

current=current->next;
}


if(current==NULL){
printf("\n element not present in list !\n");
return head;
}

if(current->next==NULL)

prevNode->next=NULL;


else
prevNode->next=current->next;

free(current);
return head;
}



head=deleteNode(head,key);

最佳答案

如果需要删除头节点,第一个函数将不起作用,因为您无法更改头节点。第二个函数获取头节点的地址,因此可以根据需要进行更改。

链接中的deleteNode函数包含以下内容:

struct node* temp = *head_ref, *prev;

// If head node itself holds the key to be deleted
if (temp != NULL && temp->data == key)
{
*head_ref = temp->next; // Changed head
free(temp); // free old head
return;
}

您可以在此处看到它取消引用 head_ref 以更改其指向的内容。

关于c - 为什么这里用**head而不是*head?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38753603/

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