以下是实现动态链表并输出该链表的 C 语言程序:
#include <stdio.h> #include <stdlib.h>
struct Student { int num; char name[20]; float score[3]; struct Student *next; };
int main() { struct Student *head, *p, *q; int num; char name[20]; float score[3];
head = NULL; // 将链表的头指针设为空指针 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]);
}
printf("链表中的学生数据:\n"); // 遍历并输出链表中的所有学生数据 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; }
return 0; }