学生成绩管理可以实现班级学生成绩的添加,最低分、最高分查找,学生成绩删除等功能。请使用带头节点的单链表实现学生成绩管理的功能
程序中已经给出链表节点,操作函数的定义和main函数。请完成InsertAhead(),DisplayMinAndMaxScore(),DeleteScore(),DeleteScoreBetweenNM(),DisplayList()函数代码编写,实现函数要求的功能。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<stdlib.h>
typedef struct LLNode //链表节点的定义
{
int score;
struct LLNode * next;
}LLNode, *ListNodePtr;
int InitialLinkList(ListNodePtr &LL);//链表初始化
int InsertAhead(ListNodePtr &LL, int N);//接收输入的N以及N个学生的成绩,采用头插法依次添加到链表中
int DisplayMinAndMaxScore(ListNodePtr &LL);//显示学生成绩的最低分和最高分,如果链表为空,显示字符“NO”,显示结束后换行
int DeleteScore(ListNodePtr &LL, int k);//删除链表中第K个学生的成绩,释放节点
int DeleteScoreBetweenNM(ListNodePtr &LL, int N, int M);//删除链表中成绩介于[N M]的节点(N<=M)
int DisplayList(ListNodePtr &LL);//显示链表中所有学生的成绩,以空格分隔
int main()
{
int op = 0, N = 0, M = 0, K = 0;
ListNodePtr ScoreList = NULL;//ScoreList是指向链表头节点的指针
if (!InitialLinkList(ScoreList)) return 0;
scanf("%d", &op); //接收每行第一个负数,代表一种操作
while (op >= -5 && op <= -1)
{
switch (op)
{
case -1: //接收输入的N以及N个学生的成绩,采用头插法依次添加到链表中
scanf("%d", &N);
InsertAhead(ScoreList, N);
break;
case -2: //显示学生成绩的最低分和最高分
DisplayMinAndMaxScore(ScoreList);
break;
case -3: //显示链表中所有学生的成绩,以空格分隔
DisplayList(ScoreList);
break;
case -4: //删除链表中第K个学生的成绩,释放节点
scanf("%d", &K);
DeleteScore(ScoreList, K);
break;
case -5://删除链表中成绩介于[N M]的节点(N<=M)
int N = 0, M = 0;
scanf("%d%d", &N, &M);
DeleteScoreBetweenNM(ScoreList, N, M);
break;
}
scanf("%d", &op);
}
return 0;
}
int InitialLinkList(ListNodePtr &LL)//链表初始化
{
LL = (ListNodePtr)malloc(sizeof(LLNode));
if (!LL) return 0;
LL->next = NULL;
return 1;
}
// 在此处补充你的代码
等一个老哥帮帮小白,自己敲出来的全是错