注册 登录
编程论坛 C++教室

有关 单向链表 删除的问题?

九天冥盟 发布于 2016-02-06 17:40, 2008 次点击
      为什么这个函数删不了输入的第一组数据;其他组数据都正常删除?   
          请大师指点指点!!!!!   
Student *del_1(Student *head,long num)
{
    Student *p1,*p2;
    p2=p1=head;
    if(head==NULL)
    {   
        cout<<" list NULL;"<<endl;
        return head;
    }
    else
    {
        while(p1->next!=NULL&&p1->number!=num)
        {
            p2=p1;  p1=p1->next;
        }
        if(p1->next==NULL)
        {
            if(p1->number==num)
               p2->next=NULL;
            else
                cout<<" sorry!!!!"<<endl;
        }
        else
        {
            if(p1==head)
              head=p1->next
;
            else
                p2->next=p1->next;
        }
    }
    return head;
}
4 回复
#2
拉链2016-02-07 06:22
从代码上看,没多大问题,估计是你调用的原因,调用方式是head=del_1(head,num)。
这代码设计太啰嗦。删除节点应该是最简单的,另要及时注销节点占用的内存。
#3
yangfrancis2016-02-07 09:57
检查一下是不是你链表输出的环节出了问题。
#4
寂静的豆苗2016-02-07 16:36
小问题,复制一遍试试!
#5
九天冥盟2016-02-08 18:10
什么  复制?
1