Давайте посмотрим на первую функцию.
studentList *newStudent(int class, char *name)
{
studentList *newNode;
newNode = (studentList*)malloc(sizeof(studentList));
return NULL;
}
Вы ничего не возвращаете. Ну, вы возвращаете нулевой указатель. Вся функция эквивалентна
studentList *newStudent(int class, char *name)
{
return NULL;
}
с единственным исключением, что ваш код вызывает дополнительную утечку памяти. Вам нужно заменить return NULL
на return newNode
. Кроме того, никогда не приводите malloc и используйте var вместо type в качестве аргумента для sizeof. Просто используйте newNode = malloc(sizeof(*newNode))
Функция initLists
имеет аналогичные проблемы. Вы создаете пару переменных, но не используете их так, как это важно после выполнения функции. Вы также пытаетесь разыменовать нераспределенные указатели.
Я на правильном пути для этого?
Не совсем. Я бы посоветовал немного больше изучить указатели и распределение памяти, а также найти пример кода для двусвязных списков.