我可以使用C中的以下原型删除最后一个节点吗:
int delete(结构节点* head,int项目)
注意:这里的第一个参数是指向起始节点的指针,而不是指向起始节点的指针的指针。
谢谢
最佳答案
是。从第一个节点开始,可以删除单链列表的最后一个节点。
试试下面的代码,
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/