C语言:一个简单的学生成绩系统,用的是链表。能输出数据但是会提示停止工作,求指点

这个程序还没写完,写的比较凌乱,见谅。代码如下:#include<stdio.h>#include<stdlib.h>#defineLENsizeof(structStu... 这个程序还没写完,写的比较凌乱,见谅。代码如下:
#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct Student)
struct Student{
int num;
int score;
struct Student * next;
};
int main()
{
struct Student * creat();
void print();
struct Student * p;
p = creat();
print(p);
return 0;

}
struct Student * creat() //定义建立动态链表的函数
{
int n = 0;
struct Student * head, * p1, * p2;
p1 = p2 = (struct Student*)malloc(LEN);
printf("请输入学生的学号和成绩,输入学号为零时结束:\n");
scanf("%d%d", &p1->num, &p1->score);
head = NULL;
while(p1 -> num != 0)
{
n++;
if(n == 1)
{
head = p1;

}
else
p2 -> next = p1;
p2 = p1;
p1 = (struct Student *)malloc(LEN);
scanf("%d%d", &p1 -> num, &p1 -> score);

}
p2 = NULL;
return(head);
}

void print(struct Student * head) //定义打印链表的函数
{
struct Student * p;
p = head;
if(head!=NULL)
while(p!=NULL)
{
printf("学号:%d\n成绩:%d\n", p->num, p->score);
p = p->next;
}
}
输入数据以后会像下图一样提示停止工作。
展开
 我来答
红_史湘云
2015-02-12 · TA获得超过541个赞
知道小有建树答主
回答量:434
采纳率:0%
帮助的人:131万
展开全部
C语言里面的链表是一种数据结构 是一种线形的存储结构

链表和数组一样,也是将一组同类型的数据组织在一起的一种数据结构
不同的是
数组采用的是顺序存储,依靠数组的首地址和元素的相对地址(下标)来实现访问。
优点是访问方便快捷,而缺点是数组是静态的,不利于实现元素的动态增减。
而链表采用的是离散存储,依靠节点间的指向下一个节点的指针来实现访问。
其优缺点和数组相反
补充:
链表里可以有不同种类型数据
追问
你这样复制粘贴不太好吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
与科技苦于
2015-02-12
知道答主
回答量:17
采纳率:50%
帮助的人:8.4万
展开全部
create函数中最后应该是 p2->next=NULL;
否则你的print函数最后一次循环中p->next会找不到值的,程序就崩溃了
追问
谢谢,不过之前已经有人和我说了这个了,所以不能采纳你的,抱歉。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7a283bc
2015-02-12 · TA获得超过221个赞
知道小有建树答主
回答量:129
采纳率:83%
帮助的人:48.8万
展开全部
你在每个(struct Student *)malloc(LEN);后加一句:p1->next = NULL;
另提醒,别忘了释放分配的内存。
更多追问追答
追问
感谢,按提示给的做果然搞定了,我想问下这是为什么,不理解,看别人没有写这一句也可以正常运行。
追答
你的程序是以p->next ==NULL作为链表末端的指示的。所以每个新加的节点都应该这样标记为末端。你没这么做的时候到了末端仍旧执行p = p->next导致越界访问内存或地址无效,所以程序错误退出。
如果你加个tail指针(类似于head)则可以以此为末端指示。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式