premetto che sto preparando anche io l'esame di programmazione:
guardando il codice si capisce che la prima lista ha due struct puntatori, next che punta agli elementi successivi della propria lista, e next 2 che punta agli elementi della seconda lista (che a sua volta ha il puntatore next per puntare agli elementi successivi), nonchè gli studenti. la funzione media_voto riceve come parametro un generico codice_corso, il ciclo for scorre tutti gli elementi della prima lista per poter associare il codice_corso ricevuto come parametro ad un codice_corso di uno specifico corso (es: informatica, sistemi, analisi: ovvero tutti i corsi di uno specifico anno, di una specifica facoltà). trovato lo specifico corso il ciclo while non fa altro che scorrere fino al puntatore di fine lista studenti, tutti gli studenti facenti parte di quel corso, somma tutti i voti di ognuno, e all'uscita dei ciclo for fa la media dei voti ottenuti, dividendo il voto totale per il numero degli studenti, scanditi con il ciclo while, che fanno parte di quel corso.
spero di non aver sbagliato e che più o meno tu abbia capito![]()