void Delete_score(STU** p_head, char Major[], int Class, int Course, int Score) { STU* p_mov; //定义新的指针保存链表的首地址,防止使用head改变原本链表 p_mov = p_head; p_mov = p_mov->next; int n = 0; while (p_mov != NULL) { if ((strcmp(p_mov->major, Major) == 0) && (p_mov->class==Class) && (p_mov->score[Course - 1] < Score)) { Delete_num(&p_head, p_mov->num); n++; } p_mov = p_mov->next; } if (n == 0) { printf("没有该类学生\n"); } }
时间: 2024-04-11 22:30:02 浏览: 293
stuinf.rar_Stuinf*getnext_Stuinf*stu_stuinf
这段代码是一个删除学生成绩的函数。函数的参数包括一个指向指针的指针p_head,表示链表的首地址;Major[]表示专业名称;Class表示班级;Course表示课程编号;Score表示分数阈值。
函数首先定义了一个指针p_mov,用于遍历链表。然后将p_head赋值给p_mov,再将p_mov指向链表的下一个节点。接着定义一个计数变量n,并初始化为0。
进入循环,当p_mov不为空时,判断p_mov所指向的节点的专业名称、班级和课程分数是否满足条件。如果满足条件,则调用Delete_num函数删除该节点,并将n加1。
循环结束后,判断n的值是否为0。如果为0,则输出"没有该类学生"的提示信息。
需要注意的是,函数中使用了strcmp函数比较字符串,以及Delete_num函数删除节点的操作。这些函数的具体实现没有提供,需要根据实际情况进行补充。
阅读全文