In questo post trovi una possibile soluzione di eliminazione in maniera ricorsiva di particolari elementi da una lista linkata (nell'esempio si tratta degli elementi con dato negativo, ma è facilmente adattabile). Passare per "riferimento" il puntatore alla testa della lista può incasinare un po' il tutto, è più semplice far restituire alla funzione il puntatore alla (eventualmente nuova) testa della lista.