Non ho capito alcune cose:
1) dato che nella funzione è sottinteso che le liste siano già allocate (è un esercizio che devo fare per l'università, non devo compilarlo ed eseguirlo), devo per forza esplicitare l'allocazione?
2) perchè max è diventato un puntatore?
3) non mi è chiara la seguente riga: int i = *max = 0; perchè assegnamo *max a i? max dovrebbe essere il valore massimo di una cella, e i l'indirizzo i-esimo della cella di un array. Inoltre i così verrebbe inizializzato 2 volte (vedi for successivo).

Per il resto ho capito gli errori che ho fatto