一个讲师教4个不同的班级。每个班级的学生人数可能会有所不同。
有两种不同的链接列表结构,用于容纳课程和学生。
1.在班级(nodeClass
)的结构中,保存有该班级(classID
)的信息和该班级(classMidtermAverage
)的学生的期中考试平均值,除此之外,还存在指向下一个班级的指针和指向属于用于定义学生信息的结构(nodeStudent
)的节点的指针。
1.在名为nodeStudent
的结构中,有一个学生的id、期中成绩和一个显示同一个班级中下一个学生的指针。
1.程序以用户提供的学号和期中成绩为输入,学号以66开头的学生为第一班,以77开头的学生为第二班,以88开头的学生为第三班,并且以99开头的学生在第4个班级中。学生必须按顺序出现在链接列表中。排序将根据期中成绩降序进行。如果笔记相同,则应将编号较低的放在列表的第一位。添加时应通过将其添加到正确的位置来保留排序后的列表。将所有学生添加到列表后,将计算每个类的中间平均值并将其保存在从相关类的nodeClass结构生成的节点的classMidtermAverage变量中。
我知道我们必须创建一个嵌套链表,但是我很难将数据插入到主链表(班级链表)和子链表(学生列表)中。
struct nodeClass
{
int classID;
double classMidtermAverage;
struct nodeClass *next;
struct nodeStudent *studentPtr;
};
struct nodeStudent
{
int studentID;
int midterm;
struct nodeStudent *next;
};
struct nodeClass* insert(struct nodeClass **head, int id, int midterm) {
struct nodeStudent* newPtr;
struct nodeClass* temp= (struct nodeClass*) malloc(sizeof(struct nodeClass*));
temp->studentPtr = (struct nodeStudent*) malloc(sizeof(struct nodeStudent));
temp->studentPtr->studentID=id;
temp->studentPtr->midterm=midterm;
long classcode=id;
while (classcode>=100){
classcode=classcode/10;
}
if (classcode=66) {
temp->classID=i;
head=temp;
}
else if( classcode=77) {
temp->classID=2;
head->next=temp;
struct nodeClass* class2= head->next;
}
else if( classcode=88) {
temp->classID=3;
head->next->next=temp;
struct nodeClass* class3= head->next->next;
}
else if( classcode=99) {
temp->classID=4;
head->next->next->next=temp;
struct nodeClass* class3= head->next->next->next;
}
return head;
}
struct nodeClass* computeClassAverage(*head) {
nodeClass* tmp;
for( tmp=head; tmp)
}
void printAll(*head);
主要功能是
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include "function.h"
int main()
{
struct nodeClass *head = NULL;
int id, midterm;
scanf("%d", &id);
while(id!=-1)
{
scanf("%d", &midterm);
insert(&head, id, midterm);
scanf("%d", &id);
}
computeClassAverage(head);
printAll(head);
return 0;
}
1条答案
按热度按时间krcsximq1#
你似乎对这个问题有些误解,我不太明白,所以我怀疑这个答案是否能使你满意,但我得冒一个险。
下面是将新元素插入到链接列表中的一种方法:
注意,这些函数在列表的 head 处添加新元素。编写函数在给定元素后添加元素,或者找到列表的末尾并在那里插入新元素并不困难。