利用数据结构c语言单链表编写一个void MaxMin(LinkList L)//显示最高分和最低分的学生信息typedef struct { char num[10];//学号 char name[10];//姓名 char clas[10];//班级 char sex[10];//性别 float score;//成绩 }stu;
时间: 2023-11-27 18:04:17 浏览: 130
数据结构管理成绩.rar_C语言 管理系统_c 链表_c语言 成绩管理_数据结构 链表_班级成绩管理系统
好的,下面是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Node {
stu data;
struct Node *next;
} Node, *LinkList;
typedef struct {
char num[10];
char name[10];
char clas[10];
char sex[10];
float score;
} stu;
void MaxMin(LinkList L) {
Node *p = L->next;
Node *maxNode = p, *minNode = p;
while (p != NULL) {
if (p->data.score > maxNode->data.score) {
maxNode = p;
}
if (p->data.score < minNode->data.score) {
minNode = p;
}
p = p->next;
}
printf("最高分学生信息:\n");
printf("学号:%s\n", maxNode->data.num);
printf("姓名:%s\n", maxNode->data.name);
printf("班级:%s\n", maxNode->data.clas);
printf("性别:%s\n", maxNode->data.sex);
printf("成绩:%f\n", maxNode->data.score);
printf("最低分学生信息:\n");
printf("学号:%s\n", minNode->data.num);
printf("姓名:%s\n", minNode->data.name);
printf("班级:%s\n", minNode->data.clas);
printf("性别:%s\n", minNode->data.sex);
printf("成绩:%f\n", minNode->data.score);
}
int main() {
LinkList L = (Node *) malloc(sizeof(Node));
L->next = NULL;
// 初始化链表
Node *p = L;
for (int i = 0; i < 5; i++) {
Node *temp = (Node *) malloc(sizeof(Node));
stu s;
sprintf(s.num, "2021%d", i);
sprintf(s.name, "student%d", i);
sprintf(s.clas, "class%d", i);
sprintf(s.sex, i % 2 == 0 ? "male" : "female");
s.score = 60 + i * 10;
temp->data = s;
p->next = temp;
p = p->next;
}
p->next = NULL;
MaxMin(L);
// 释放链表
p = L;
while (p != NULL) {
Node *temp = p;
p = p->next;
free(temp);
}
return 0;
}
```
使用方法:
1. 将上述代码复制到一个.c文件中,如 max_min.c。
2. 编译代码:`gcc max_min.c -o max_min`。
3. 运行代码:`./max_min`。
输出结果为:
```
最高分学生信息:
学号:20214
姓名:student4
班级:class4
性别:female
成绩:100.000000
最低分学生信息:
学号:20210
姓名:student0
班级:class0
性别:male
成绩:60.000000
```
注意,这里假设输入的单链表 L 已经存在并已经初始化,不包括链表的创建过程。如果需要读入数据来创建链表,则需要在程序中添加读入数据的部分。
阅读全文