| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 438 人关注过本帖
标题:链表问题!
只看楼主 加入收藏
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
结帖率:97.44%
收藏
已结贴  问题点数:10 回复次数:7 
链表问题!
程序代码:
ST * build(ST *head_trans)
{
    ST *p,*p2;
    int n;
    printf("你的班级有多少人?\n");
    scanf("%d",&n);
    p=(ST *)malloc(sizeof(ST));
    printf("请输入:学号  姓名  班别  数学成绩  英语成绩  物理成绩\n");
    scanf("%d%s%s%d%d%d",&p->student_num,&p->student_name,&p->GRADE,&p->grades_math,&p->grades_englise,&p->grades_physics);
    while(n)
    {
        if(head_trans==NULL)
            head_trans=p;
        else
        {
            p->next=p2;
            p=p2;
        }
        p2=(ST *)malloc(sizeof(ST));
        printf("请输入:学号  姓名  班别  数学成绩  英语成绩  物理成绩\n");
        scanf("%d%s%s%d%d%d",&p2->student_num,&p2->student_name,&p2->GRADE,&p2->grades_math,&p2->grades_englise,&p2->grades_physics);
        n--;
        if(n==0)
        {
            p->next=NULL;
            break;
        }
    }
    return (head_trans);
}
            







帮我找找上面这创建链表的函数的错误!谢啦
搜索更多相关主题的帖子: color 
2011-04-14 23:14
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:2 
对链表不太熟,不过书里说字符数组scanf的时候, 数组名前不需要加&吧!

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-14 23:20
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:2 
输入字符数组,也就是字符串的时候不要加上&,因为字符名本身就是地址!你的学生姓名可能是字符串吧!
char str[100];
scanf("%s",str);

   唯实惟新 至诚致志
2011-04-15 00:03
帅的让人抽
Rank: 4
来 自:安徽
等 级:业余侠客
帖 子:94
专家分:224
注 册:2010-9-30
收藏
得分:2 
我写了一个,已通过运行,你看一下,还可以修改优化,你写的有问题,具体我就不说了.
程序代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct NODE
{int   student_num;

 char  student_name[10];

 int   GRADE;

 int   grades_math;

 int   grades_englise; 

 int   grades_physics;       

 struct NODE  *next;
}ST;

ST* build(void)
{  ST *head_trans=NULL;   /*链表的头指针*/
    ST *p,*p2,*r;
    int n;
    printf("你的班级有多少人?\n");
    scanf("%d",&n);
    p=(ST *)malloc(sizeof(ST));
    head_trans=p;
    p->next=NULL;
    printf("请输入:学号  姓名  班别  数学成绩  英语成绩  物理成绩\n");
    scanf("%d%s%s%d%d%d",&p->student_num,&p->student_name,&p->GRADE,&p->grades_math,&p->grades_englise,&p->grades_physics);
    n=n-1;   /*已经建立一个结点了,所以减一*/
    r=p;
    while(n)  /*为剩下的人建立结点,用尾插法建表*/
    {   p2=(ST *)malloc(sizeof(ST));
        printf("请输入:学号  姓名  班别  数学成绩  英语成绩  物理成绩\n");
        scanf("%d%s%s%d%d%d",&p2->student_num,&p2->student_name,&p2->GRADE,&p2->grades_math,&p2->grades_englise,&p2->grades_physics);
        r->next=p2;
        r=p2;
        n--;
     }

 r->next=NULL;    

 return (head_trans);
}

int  main()
{ST  *head;

 head=build();

 return  0;
}  

樱花下落的速度依然是秒速五厘米,即使发了一千次短信,
心与心之间也只能靠近一厘米……
2011-04-15 09:08
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:2 
错误就是输入格式的问题吧。
程序值得修改的地方有不少,比如n==0的判断,可以放在插入节点的前面,否则会出现最后多申请一个节点而不插入的情况,并且建议改为放置一个头结点,可以避免判断头指针。
2011-04-15 09:18
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
收藏
得分:0 
再仔细看看,谢啦!!

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-04-15 16:27
cq7610
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:28
专家分:111
注 册:2010-11-17
收藏
得分:2 
经常程序报错,都只是小小的语法错误。应该自己先想办法解决。:)
2011-04-15 16:32
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
收藏
得分:0 
回复 7楼 cq7610
我不是那种一不会就问的人!相信你也不是那种别人问,你就说别人没思考的人!

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-04-15 21:58
快速回复:链表问题!
数据加载中...
 
   



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

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