写了一个建立动态链表的函数,在主函数中打印第一个节点的数据。一运行发现程序也不报错,在输入数据后卡着不动,也不返回。
代码如下
运行结果如下
写了一个建立动态链表的函数,在主函数中打印第一个节点的数据。一运行发现程序也不报错,在输入数据后卡着不动,也不返回。
代码如下
运行结果如下
上面代码没问题,代码未改动,运行结果见后面图片:
#include<stdio.h>
#include<malloc.h>
struct Student {
int num;
int score;
struct Student* next;
};
int n;
struct Student* a()
{
struct Student* head, * p1, * p2;
n = 0;
p1 = p2 = (struct Student*)malloc(sizeof(struct Student));
printf("请输入第%d位的学号:",n+1);
scanf("%d", &p1->num);
printf("请输入第%d位的成绩:",n+1);
scanf("%d",&p1->score);
head = NULL;
while (p1->num != 0)
{
n = n + 1;
if (n == 1)
{
head = p1;
}
else
{
p2->next = p1;
p2 = p1;
}
p1 = (struct Student*)malloc(sizeof(struct Student));
printf("请输入第%d位的学号:",n+1);
scanf("%d", &p1->num);
printf("请输入第%d位的成绩:",n+1);
scanf("%d",&p1->score);
}
p2->next = NULL;
return head;
}
int main()
{
struct Student* pt;
pt = a();
printf("%d %d\n", pt->num, pt->score);
return 0;
}
//请输入第1位的学号:1011
//请输入第1位的成绩:98
//请输入第2位的学号:1012
//请输入第2位的成绩:90
//请输入第3位的学号:1013
//请输入第3位的成绩:100
//请输入第4位的学号:0
//请输入第4位的成绩:0
//1011 98
//请按任意键继续. . .
输入完一个,敲回车。