为何我的删除操作,对第一个结点无效,其余正常。
/*定点删除节点*/
Item*Delete_item(Item *head,int select_num)
{
system("cls");
Item * p1,* p2;
if(head == NULL)/*用来检查链表是否被创建*/
{
printf("\nlist null!\n");
return head;
}
p1 = head;
while(select_num!=p1->num && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(select_num==p1->num)
{
if(p1==head)
{
head = p1->next;/*将第二个节点*(也就是p1的后继)赋给head*/
return head;
}
else
p2->next = p1->next;
}
return head;
} 链表
[解决办法]
head结点一般是存放数据的,只是为了方便链表操作的,对于带头结点的链表来说,第一个元素是head->next
[解决办法]
if(p1==head)
{
head = p1->next;/*将第二个节点*(也就是p1的后继)赋给head*/
return head;
}
改成head->next=p1->next;试试
[解决办法]