Ciao, ci sono due errori.
Il primo, l'operatore "diverso" nella funzione stampaLista:
while(p1=!NULL)
andava scritto:
while(p1!=NULL)
altrimenti fai un'assegnazione. Le warning del compilatore vanno lette.
Secondo, la funzione che cerca il massimo è sbagliata. Intanto nel for fai un confronto di puntatori, non di interi. Cosa vuol dire "ris<ris->next"? Forse intendevi "ris->val<ris->next->val". Oltre all'errore di sintassi, resta il fatto che la lista va scansionata tutta, mentre quel ciclo for resta fermo sul primo elemento se questo non è maggiore del successivo.