//删除链表中所有为n的数 ,head 链表的首节点,number链表的长度;
Node* deleteitem(Node *head , int n, int number)
{
Node *p, *p1;
p1=head;
if(number==-1)
return head;
else {
if(p1->val==n)
{
head=head->next;//判断第一个;
p=head;
}
while(number--)
{
p=p1;
p1=p1->next;
if(p1->val==n)
{
p1=p1->next;
p1=deleteitem(p1,n,number);
p->next=p1->next;
p1=p1->next;
free(p1);
}
}
}
}
想问一下这个函数的递归哪里有问题?
问题太多,先说两个
if(number==-1)
应该是if(number==0)
p=head
新的head存到p中,但是下面马上p=p1
,新的head丢失了。