标题:第一个结点怎么删除?
取消只看楼主
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
结帖率:97.44%
已结贴  问题点数:50 回复次数:2 
第一个结点怎么删除?
ST *del(ST *trans_head2,int stu_num2)//函数功能:删除stu_num2所在的结点(目前第一个结点删除不了)           trans_head2是传来的头指针
{
    ST *p1,*p2,*p3;
    p3=trans_head2;
    p2=trans_head2;
    p1=trans_head2;
    if(trans_head2==NULL)
    {
        printf("无数据!");
    }
    else
    {
        while((p1->stu_num!=stu_num2)&&p1->next!=NULL)
        {
            p2=p1;
            p1=p1->next;
        }
        if(p1->stu_num==stu_num2)
        {
                p2->next=p1->next;
        }
    }
    free(p1);
    while(p3)//这步只是用来检测删除的效果
    {
        printf("%d %d %d %d\n",p3->stu_num,p3->grade_math,p3->grade_english,p3->grade_physics);
        p3=p3->next;
    }
    return trans_head2;
}


搜索更多相关主题的帖子: next 
2011-04-24 13:45
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
得分:0 
回复 2楼 voidx
ST *trans_head2            这就是传来的头结点啊!

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-04-24 14:58
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
得分:0 
回复 4楼 voidx
程序代码:
ST *creat(int n)
{
    int i;
    ST *head,*p,*p2;
    head=NULL;
    p=(ST*)malloc(sizeof(ST));
    printf("请输入学号,数学成绩,英语成绩,物理成绩: \n");
    scanf("%d%d%d%d",&p->stu_num,&p->grade_math,&p->grade_english,&p->grade_physics);
    p2=p;
    head=p2;
    for(i=0;i<n-1;i++)
    {
        p=(ST*)malloc(sizeof(ST));
        printf("请输入学号,数学成绩,英语成绩,物理成绩: \n");
        scanf("%d%d%d%d",&p->stu_num,&p->grade_math,&p->grade_english,&p->grade_physics);
        p2->next=p;
        p2=p2->next;
    }
    p2->next=NULL;

    return head;
}



这是创建链表的函数, 我一直都以为  head 就是头指针,但是按照您的说法,似乎是错的!麻烦帮忙改改!!

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-04-24 22:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-337751-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.515019 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved