gpt4 book ai didi

c - 使用指向起始节点的单指针删除单链表的最后一个节点

转载 作者:行者123 更新时间:2023-12-04 12:18:51 24 4
gpt4 key购买 nike

我可以在 C 中使用以下原型(prototype)删除最后一个节点吗?int delete(struct node *head, int item)

注意-:这里的第一个参数是指向起始节点的指针,而不是指向起始节点的指针。

谢谢

最佳答案

是的。可以从第一个节点开始删除单向链表的最后一个节点。

试试下面的代码,

int delete(struct node *head)
{
struct node *temp =head;
struct node *t;
while(temp->next != NULL)
{
t=temp;
temp=temp->next;
}
free(t->next);
t->next=NULL;
}

但是,如果您的链表中只有一个元素,那么在删除该元素之后,您的头指针仍将指向您调用 delete() 的函数中现已删除的内存位置>。在这种情况下,请使用以下版本的 delete()

struct node *delete(struct node *head)
{
struct node *temp =head;
struct node *t;
if(head->next==NULL)
{
free(head);
head=NULL;
}
else
{
while(temp->next != NULL)
{
t=temp;
temp=temp->next;
}
free(t->next);
t->next=NULL;
}
return head;
}

调用函数delete()如下,

head=delete(head);

关于c - 使用指向起始节点的单指针删除单链表的最后一个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17184511/

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