标题:求救!数据结构!大一初学者(自学的)一段很简单的代码不知哪里有错?求学 ...
只看楼主
liman123
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:79
专家分:178
注 册:2012-10-6
得分:0 
9楼说的后两个错误我发帖后就发现了,并且也改过来了。可输出的还是乱码,在这个程序中头结点中没有数据,我觉得好像没有必要输出头结点。
2012-10-11 12:55
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
得分:0 
我编译的 怎么出结果了呢

我要成为嘿嘿的黑客,替天行道
2012-10-11 20:40
senpujituan
Rank: 4
等 级:业余侠客
帖 子:91
专家分:203
注 册:2012-6-29
得分:0 
回复 9楼 zhu224039
你那个不行吧?他头结点都没赋值,怎么会有正确的输出呢?
2012-10-12 09:08
zzzzy
Rank: 1
等 级:新手上路
威 望:1
帖 子:3
专家分:9
注 册:2012-10-10
得分:3 
这里改为:
void print_list(student *L)
 {
     student *s;
     s=L->next;
     while(s)  //
     {
         printf("%ld,%d\n",s->num,s->score);
         s=s->next;     //改
     }
 }
前面6楼的也是正确的,10楼的改对地方,但有点小问题

2012-10-12 10:00
zzzzy
Rank: 1
等 级:新手上路
威 望:1
帖 子:3
专家分:9
注 册:2012-10-10
得分:0 
说错了,是9楼的问题,不是10楼的,10楼的也是对的,结果已经运行,如果你运行不出来,可能是你的软件有问题
2012-10-12 10:03
liman123
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:79
专家分:178
注 册:2012-10-6
得分:0 
为什么,要将“student *s=NULL;”改成“student *s;”呢?
2012-10-12 13:10
liman123
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:79
专家分:178
注 册:2012-10-6
得分:0 
为什么要将“student *s=NULL;”改成“student *s”呢?
2012-10-13 11:48
nikobelic
Rank: 2
等 级:论坛游民
帖 子:37
专家分:30
注 册:2012-5-26
得分:3 
楼主解决了么?你大一就学数据结构?那C是同时学的?我现在大二 刚学数据  也觉得比较费劲  但是多动手写代码还是有效果的。多多交流吧!加油!↖(^ω^)↗
2012-10-14 21:19
liman123
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:79
专家分:178
注 册:2012-10-6
得分:0 
C我暑假自学了,多多交流,多多指教。可是为什么student *S=NULL要改成student *s啊!急急急!急急急急!
2012-10-14 22:07
努力学习ing
Rank: 1
等 级:新手上路
帖 子:7
专家分:1
注 册:2012-10-15
得分:0 
你是要进行输入输出,所以我建议你student *creat_list(student *L)最好不要带形参,带了也可以。
你在main()函数中对L已经进行了定义,那么运行时形参也就被初始化了,也就有了地址,在student *creat_list(student *L)中你又对L进行了动态申请,二者产生矛盾,所以程序会报错。我给你修改了下代码,可以运行的,细节处自己在处理下:
student *creat_list(student *L)
{
    int i;
    student *p,*tail=NULL;                   //tail表示尾指针
    L=NULL;                                  //因为链表未建立,所以对头指针和尾指针都进行了清零处理
    for(i=0;i<MAXSIZE;i++)
    {
        p=(student *)malloc(sizeof(student));
        scanf("%d%d",&p->num,&p->score);
        p->next=NULL;
        if(L==NULL)
            L= p;
        else
            tail->next=p;
        tail=p;  
    }
    return L;
}
void print_list(student *L)
{
    student *s=L;
    while(s)
    {
        printf("%ld,%d\n",s->num,s->score);
        s=s->next;
    }
}


[ 本帖最后由 努力学习ing 于 2012-10-18 13:18 编辑 ]
2012-10-18 11:14



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




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

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