Ciao!! Devo fare una funzione ricorsiva che rimuova tutti gli elementi, con valore uguale a quello dato, da una lista ordinata e restituisca il puntatore alla testa della lista.

Nodo della lista:
codice:
typedef struct elem_t{
     int d;
     struct elem_t* next;
}elem_t;
La funzione da implementare è:
codice:
elem_t* rimuovi(int dato, elem_t* lista)
Non so come tener traccia della testa della lista per restituirla al termine della ricorsione come devo fare?

Grazie