【问题描述】提交与自己学号相邻的两位同学的学号与一门考试成绩,编程建立由这三组数据结点组成的简单链表。 【输入形式】三组同学的学号后三位,成绩 【输出形式】链表各节点的数据 【样例输入】201,98 202,94 203,89 【样例输出】】[num=201,score=98] [num=202,score=94] [num=203,score=89] 【样例说明】输入三组数据,创建一个单链表。这个问题用c语言写,完整代码给我
时间: 2024-02-25 18:53:58 浏览: 45
以下是题目要求的完整代码,使用了链表的动态分配方式,同时对链表的头插法进行了实现。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
struct Node {
int num, score; // 学号后三位和考试成绩
struct Node* next; // 指向下一个节点的指针
};
int main() {
// 定义链表头节点
struct Node *head = NULL;
// 创建第一个节点
int num1, score1;
printf("请输入第一个同学的学号后三位和考试成绩,用空格隔开:");
scanf("%d%d", &num1, &score1);
struct Node* node1 = (struct Node*)malloc(sizeof(struct Node));
node1->num = num1;
node1->score = score1;
node1->next = NULL;
head = node1;
// 创建第二个节点
int num2, score2;
printf("请输入第二个同学的学号后三位和考试成绩,用空格隔开:");
scanf("%d%d", &num2, &score2);
struct Node* node2 = (struct Node*)malloc(sizeof(struct Node));
node2->num = num2;
node2->score = score2;
node2->next = head;
head = node2;
// 创建第三个节点
int num3, score3;
printf("请输入第三个同学的学号后三位和考试成绩,用空格隔开:");
scanf("%d%d", &num3, &score3);
struct Node* node3 = (struct Node*)malloc(sizeof(struct Node));
node3->num = num3;
node3->score = score3;
node3->next = head;
head = node3;
// 遍历链表输出节点数据
struct Node* cur = head;
while (cur != NULL) {
printf("[num=%d,score=%d]\t", cur->num, cur->score);
cur = cur->next;
}
// 释放内存,避免内存泄漏
free(node1);
free(node2);
free(node3);
return 0;
}
```
运行样例:
```
请输入第一个同学的学号后三位和考试成绩,用空格隔开:201 98
请输入第二个同学的学号后三位和考试成绩,用空格隔开:202 94
请输入第三个同学的学号后三位和考试成绩,用空格隔开:203 89
[num=203,score=89] [num=202,score=94] [num=201,score=98]
```