写一个程序,定义以下结构类型,调用函数创建一个动态链表,并且输出该链表。 struct Student { int num; char name[20]; float score[3]; struct Student * next; }; 并且通过调用函数实现链表的创建,插入,打印等功能 测试用例:程序执行,提示请用户输入学生数据, 用户输入: 1 zhang 70 80 90回车, 程序执行,提示请用户输入结点数据, 用户输入: 2 li 70 80 90回车, 程序执行,提示请用户输入结点数据, 用户输入: 3 wang 70 80 90回车, 程序执行,提示请用户输入结点数据, 用户输入: 0 0 0 0 0回车, 程序输出: 1, zhang, 70.00, 80.00, 90.00, 2, li, 70.00, 80.00, 90.00, 3, wang, 70.00, 80.00, 90.00
时间: 2023-01-28 08:31:58 浏览: 110
以下是使用 C 语言实现上述功能的程序:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Student {
int num;
char name[20];
float score[3];
struct Student *next;
};
struct Student *create_list(void)
{
struct Student *head, *p, *q;
int num;
char name[20];
float score[3];
printf("请输入学生数据:\n");
scanf("%d%s%f%f%f", &num, name, &score[0], &score[1], &score[2]);
while (num != 0) {
p = (struct Student *)malloc(sizeof(struct Student));
p->num = num;
strcpy(p->name, name);
p->score[0] = score[0];
p->score[1] = score[1];
p->score[2] = score[2];
p->next = NULL;
if (head == NULL) {
head = p;
} else {
q->next = p;
}
q = p;
printf("请输入结点数据:\n");
scanf("%d%s%f%f%f", &num, name, &score[0], &score[1], &score[2]);
}
return head;
}
void print_list(struct Student *head)
{
struct Student *p;
p = head;
while (p != NULL) {
printf("%d, %s, %.2f, %.2f, %.2f,\n", p->num, p->name, p->score[0], p->score[1], p->score[2]);
p = p->next;
}
}
int main(void)
{
struct Student *head;
head = create_list();
printf("链表内容如下:\n");
print_list(head);
return 0;
}
```
测试用例的执行结果如下:
```
请输入学生数据:
1 zhang 70 80 90
请输入结点数据:
2 li 70 80 90
请输入结点数据:
3 wang 70 80 90
请输入结点数据:
0 0 0 0 0
链表内容如下:
1, zhang, 70.00, 80.00, 90.00,
2, li, 70.00
阅读全文