Album *tempStruct;
fgets(&(*tempStruct->firstField),MAXCHARACTERS, stdin);
tempStruct - просто указатель, и вы не должны ничего хранить в этом смещении указателя
&(*tempStruct->firstField) // or just tempStruct->firstField since &* is just cancellation
Я не уверен, как работает этот код, но насколько я знаю, я вижу, что каждая строка, использующая tempStruct, является нарушением доступа без исключения на
link = List(&tempStruct);
и
&(tempStruct->thirdField) == 1
В большинстве случаев будет ЛОЖНО ЛОЖНЫМ, поскольку это просто указатель, который может быть 1 просто случайно.