Я думаю, что я испорчу что-то простое, чего не вижу, но то, что должно произойти, - это опция меню для добавления нового узла. Основная программа создает новый узел, передает его в функцию, которая добавляет его в конец связанного списка. Ниже приведены фрагменты кода, которые должны помочь объяснить, что я сделал.
Объявление узла:
typedef struct Node {
char fname[51];
char lname[51];
int idnum;
float scores[5];
float average;
struct Node *next;
} Node;
Создание нового узла и назначенные пользователем значения:
case 'A':
entry = (Node*)malloc(sizeof(Node));
printf("Enter the name of the record you would like to append\nFirst:");
scanf("%50s", &(*entry).fname);
printf("\nLast:\n");
scanf(" %50s", &(*entry).lname);
printf("Enter the ID of the record you would like to append\n");
scanf("%d", &(*entry).idnum);
printf("Enter the scores of the record you would like to append\n");
for(j=0;j<5;j++) {
scanf("%f", &(*entry).scores[j]);
}
head = addend(head,entry);
printrecords(head,disp);
break;
Добавить узел в конец связанного списка:
Node* addend(Node* head, Node* entry) {
if(head == NULL) {
return NULL;
}
Node *cursor = head;
while(cursor->next != NULL) {
cursor = cursor->next;
}
cursor->next = entry;
return head;
}
Любая помощь очень ценится.
РЕШИТЬ:
не уверен, почему я создавал новый узел, когда прошел узел, который я хотел назначить ему. Код обновлен, чтобы отразить это. Также, как указал @jose_Fonte, этот код рискованно использовать в формальной обстановке, так как ссылка на заголовок может быть потеряна.