函数递归的未实现问题

//删除链表中所有为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);
                    }
           }
    }
}

想问一下这个函数的递归哪里有问题?

阅读 1.4k
1 个回答

问题太多,先说两个

  1. if(number==-1)应该是if(number==0)
  2. 第一个节点如果为n的地方,缺少free,p=head新的head存到p中,但是下面马上p=p1,新的head丢失了。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进