求救!数据结构!大一初学者(自学的)一段很简单的代码不知哪里有错?求学长和高人指点。

谜一样的Coder 2012-10-06 10:49:47
我是一个大一的学生刚开始自学数据结构,下面是上机实践遇到的一点小问题。
下面一段代码。只是实现简单的链表输入输出咋会出问题呢?好像是scanf()有问题但又不知哪儿有错?望各位指点一下!
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 10
#define NULL 0
typedef struct student
{
int num;
int score;
struct student *next;
}student;

student *creat_list(student *L)
{
int i;
student *p,*r;
L=(student * )malloc(sizeof(student));
L->next=NULL;
r=L;
for(i=0;i<MAXSIZE;i++)
{
p=(student *)malloc(sizeof(student));
scanf("%d,%d",&p->num,&p->score);
p->next=NULL;
r->next=p;
r=p;
}
return L;
}
void print_list(student *L)
{
student *s;
s=L->next;
while(s->next!=NULL)
{
printf("%ld,%d",s->num,s->score);
s++;
}
}
void main()
{
student *L,*q;
L=NULL;
printf("输入相关数据:\n");
q=creat_list(L);
printf("相关数据为:\n");
print_list(q);
}
...全文
312 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
谜一样的Coder 2012-10-08
  • 打赏
  • 举报
回复
还是不行啊!崩溃了。新手太难了。
happytengfei 2012-10-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
用VC++6.0编的 0 error(s); 0 warning(s):就是执行不了,连输入都没输就直接跳出了。我个人估计可能scanf语句有问题;
[/Quote]

好吧,成功被你误导,scanf应该没错,我觉得最大的问题是print_list里的“s++”,程序非崩溃不可。
happytengfei 2012-10-07
  • 打赏
  • 举报
回复
scanf("%d,%d",&p->num,&p->score);查查书,确定& 与 ->的优先级大小。
q503959 2012-10-07
  • 打赏
  • 举报
回复
现在都在弄php..好久没碰过c了....重温一下感觉...顺便帮顶
谜一样的Coder 2012-10-07
  • 打赏
  • 举报
回复
用VC++6.0编的 0 error(s); 0 warning(s):就是执行不了,连输入都没输就直接跳出了。我个人估计可能scanf语句有问题;
happytengfei 2012-10-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

将“s++;”改成了“s=s->next;”了可还是不能执行!程序崩溃了,我也快要崩溃了
[/Quote]

不会吧,我这边运行的很好啊。
huangxy10 2012-10-07
  • 打赏
  • 举报
回复

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 2
#define NULL 0
typedef struct node
{
int num;
int score;
struct node *next;
}student;

student *creat_list( student *L)
{
int i;
student *p,*r;
L=(student * )malloc(sizeof(student));
L->next=NULL;
r=L;
for(i=0;i<MAXSIZE;i++)
{
p=(student *)malloc(sizeof(student));
scanf("%d,%d",&p->num,&p->score);
p->next=NULL;
r->next=p;
r=p;
}
return L;
}
void print_list(student *L)
{
student *s;
s=L->next;
while(s!= NULL) //自身不为空时,打印出来
{
printf("%d,%d\n",s->num,s->score);
//s++;
s = s->next;
}
}
void main()
{
student *L,*q;
L=NULL;
printf("输入相关数据:\n");
q=creat_list(L);
printf("相关数据为:\n");
print_list(q);
}
谜一样的Coder 2012-10-07
  • 打赏
  • 举报
回复
将“s++;”改成了“s=s->next;”了可还是不能执行!程序崩溃了,我也快要崩溃了
  • 打赏
  • 举报
回复
话说错误信息贴下吧
DeDeWo 2012-10-06
  • 打赏
  • 举报
回复
scanf("%d,%d",&p->num,&p->score);
这个这个,你输入时是不是没有输入 逗号了
访问真八字排盘系统介绍: 1、八字排盘 八字排盘是将年月日时按照天干地支的形式进行排列,一个时间单位代表了一个柱。八字由年柱、月柱、日柱和时柱共四个柱组成,也被称为四柱八字。八字学中基于中国阴阳五行、天干地支与刑冲克害、以及民间盲派的神煞论等方式,进一步预测爱情顺遂、工作高低、姻缘好坏、财富高低、学业成就、身体健康等事的学问。 八字排盘由以下元素组合:年月日时四柱、大运干支、胎元 、流年干支、十神、地势、神煞等。生辰八字不只是把干支历计算出来,而还要遵守月令、节令的强弱,时辰的阴阳变化进行校正。排盘分析,就是根据出生者的性别、天干地支的阴阳五行关系、进一步推算出来的一套方法论,给预测者做人生吉凶的参考数据,在未来事业、财运、婚姻、家庭等问题时,能做出风险较低的决策。 八字排盘怎么看 八字排盘由年、月、日、时四柱组成,每柱包含一个天干和一个地支,共八个字。年柱代表出生的年份,月柱代表出生的月份,日柱代表出生的日期,时柱则代表出生的时辰。每个柱的干支组合都会对个人的命运产生影响。天干地支旁边标注的正财、偏财、偏印、正印、比肩、劫财、食神、伤官、正官、七杀等,称为十神。 2、八字排盘软件介绍 我们是腾讯云市场金牌合作伙伴,广州正规软件开发公司,开发的八字排盘系统数据最全面精准,我们八字排盘采用最精确的排盘程序,而且运用“真太阳时”,进行更精确的时间划分。大家都知道我们使用的北京时间,是统一规定的标准时间。而八字排盘需要相对于太阳方位的天文时间,即平太阳时。我们国家地大物博,北京时间19时,哈尔滨已经夜幕降临,而新疆却还是太阳高挂,这时哈尔滨的天文时间可能在20:00以后,而新疆的天文时间可能在16时以前。北京时间是东经120度经线的平太阳时,如果您出生地的经度与北京时间所处的经度差异较大,或者处于单数时间点的前后,比如6点差一刻,8点,10点15分等

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧