Originariamente inviato da moles
typedef struct termine {
float coeff;
int esponente;
struct termine *next;
} Termine, *Polinomio;
Beh dato che ogni elemento contiene un puntatore all'elemento successivo (una sorta di lista concatenata) quello che ti conviene fare e' di definirti una funziona ricorsiva del tipo.

codice:
void libera_memoria(Polinomio*p)
{
if(p->next==NULL) return;
else 
{
libera_memoria(p->next);
free(p->next);
}
}
Dovrebbe andare bene, cmq se vedi che c'è qualche errore(non credo) sappi che deve essere una funzione ricorsiva che arriva all'ultimo elemento del Polinomio e quando non ci sono altri termini allora comincia a tornare indietro.