Прежде всего, если я понимаю ваш вопрос, вы должны предоставить связанный список.Поскольку связанные списки сложнее, чем чтение файла, генерация чисел и т. Д., Я только дам вам подсказки об этом.
Если бы вам пришлось поместить ваших студентов в простой массив, это было бы легко,Например, простой студент myArray [100] сделает это.Это будет означать, что все ваши ученики будут храниться в одной и той же части памяти.Вот так: (A) (B) (C).А, В и С - трое учеников, которые находятся рядом друг с другом.Это не удобно, если у вас будет огромное количество студентов, так как вам нужно будет найти достаточно большую зону в памяти, чтобы заполнить все.Вот почему есть связанный список: так что вы можете поместить своих учеников повсюду в памяти.Например: (A) (некоторые другие данные) (B) (некоторые другие данные) (C).Там вам не нужно иметь большое, уникальное, свободное пространство в вашей памяти.
Но есть проблема: когда вы используете массив, очень легко найти ваши данные.Вам просто нужно знать начало массива, а затем вычислить количество нужных вам данных, начиная с первого элемента массива.Вот что это значит, когда вы делаете: например, myArray [4].
Поскольку вы собираетесь использовать связанный список, вы не можете рассчитать, где находятся данные, потому что, и это идея связанного списка, они могут быть где угодно.Вот почему список связан : вам нужно указать способ перехода от данных к данным.И вы собираетесь использовать лучшие друзья программистов на C: указатели.
Итак, вы должны улучшить свою структуру:
struct student{
char* lastName;
char* firstName;
int age;
float grade[3];
student* next
}
И вам понадобится очень важная переменная: student * listStart.Это эквивалент переменной «массив», которую вы используете.Место, с которого вам нужно начинать, если вы хотите получить доступ к вашим данным.
Теперь, что вы должны сделать в основном:
- Прочитайте файл, где находятся ваши студентысохранено.
- Для каждого ученика используйте malloc (), чтобы выделить достаточно памяти для этого ученика (изучите, как работает malloc (), это крайне важно).
- Если это первый ученик,listStart указывает на этого ученика.
- Для этого вновь созданного ученика заполните все поля (имя, оценки и т. д.).Заполните «следующий» указатель предыдущего студента с адресом этого студента.«Следующим» указателем студента, которого вы создаете, должно быть «NULL», на случай, если это конец списка.
Хорошо, сначала это немного сбивает с толку.Но если вам удастся сделать это, вы узнаете что-то полезное, и мы не сделаем вашу домашнюю работу за вас.Удачи;