我可以在C中使用以下原型删除最后一个节点 - 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;
}
Run Code Online (Sandbox Code Playgroud)
但是如果链接列表中只有一个元素,那么在删除该元素后,您的头指针仍将指向您调用的函数中现在已删除的内存位置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;
}
Run Code Online (Sandbox Code Playgroud)
调用该函数delete()如下,
head=delete(head);
Run Code Online (Sandbox Code Playgroud)