实现
#include <stdio.h>
#include <stdlib.h>
#define PERSON_SIZE sizeof(struct Person)
struct Person
{
int num;
float score;
struct Person * next;
};
struct Person * create()
{
struct Person * p, * tail, * head = NULL;
int num;
float score;
do
{
printf("请输入学号和分数:");
scanf("%d %f", &num, &score);
// 学号小于0终止
if (num <= 0)
{
break;
}
// 创建节点存储信息
p = (struct Person *)malloc(PERSON_SIZE);
p->num = num;
p->score = score;
p->next = NULL;
// head是否第一次创建
if (head == NULL)
{
head = p;
tail = p;
}
else
{
tail->next = p;
tail = p;
}
}while (true);
// 返回头指针
return head;
}
void print(struct Person * head)
{
if (head == NULL)
{
printf("未录入有效数据\n");
return ;
}
struct Person * p = head;
printf("%-20s%-20s\n", "学号", "分数");
while (p != NULL)
{
printf("%-20d%-20f\n", p->num, p->score);
p = p->next;
}
}
int main()
{
struct Person * p = create();
print(p);
return 0;
}