Я пытаюсь создать связанный список учеников, где у каждого ученика есть связанный список оценок.Я застрял, пытаясь получить доступ к оценкам учащегося, используя следующую структуру данных:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
typedef struct student_list_struct{
char student[MAX];
struct grades_list_struct *grade_head_ptr;
struct student_list_struct *next;
} StudentNode;
typedef struct grades_list_struct{
int grade;
struct student_list_struct *next;
} GradeNode;
GradeNode *insertGrade(int grade, GradeNode *head){
GradeNode *newNode=NULL;
newNode=(GradeNode*)calloc(1, sizeof(GradeNode));
if(head!=NULL){
newNode->grade=grade;
return newNode;
} else {
newNode->grade=grade;
newNode->next=NULL;
return newNode;
}
}
StudentNode *insertStudent(char studentName[MAX], int studentGrade, StudentNode *head){
StudentNode *newNode=NULL;
newNode=(StudentNode*)calloc(1, sizeof(StudentNode));
newNode->grade_head_ptr=(GradeNode*)calloc(1, sizeof(GradeNode));
if (head==NULL){
strcpy(newNode->student, studentName);
newNode->next=NULL;
newNode->grade_head_ptr=insertGrade(studentGrade, newNode->grade_head_ptr);
return newNode;
} else {
strcpy(newNode->student, studentName);
newNode->grade_head_ptr->grade=studentGrade;
newNode->grade_head_ptr=insertGrade(studentGrade, newNode->grade_head_ptr);
return newNode;
}
}
void printGrades(char studentName[MAX], StudentNode *head){
StudentNode *p=NULL;
p=head;
while (p!=NULL){
if (strcmp(p->student,studentName)==0){
printf("%d\n", p->grade_head_ptr->grade);
}
p->grade_head_ptr=p->grade_head_ptr->next;
}
}
int main(){
StudentNode *head=NULL;
StudentNode *temp=NULL;
head=insertStudent("Student A", 10, head);
head=insertStudent("Student A", 20, head);
printGrades("Student A", head);
}
В настоящее время он ничего не печатает и не возвращает, и я не могу понять, что не так с моей структурой данных.Возможно, это связано с тем, как я пытаюсь получить оценку, используя head->grade_head_ptr->grade
.
. Любая помощь будет принята с благодарностью.