Originariamente inviato da Stoicenko
se fai una free prima di *lista = null ti darà segmentation fault (ma già il compilatore dovrebbe dirtelo se è serio con un warning)

devi fare una if dentro il while.. se lista->next->next è null allora lista è il penultimo.. deallochi l'ultimo e poni lista->next a null
Ci avevo pensato anche io, ma non rischio di "sforare" fancendo lista->next->next se lista->next è null? Perchè così vado avanti di 2 e non posso sapere se è null