Ciao a tutti/e,
devo svolgere il seguente esercizio e sono in difficoltà: 
Scrivere una funzione che riceve una testa di una lista di numeri interi e che 
cancella dalla lista tutti i primi elementi che contengono un valore pari
La funzione deve eventualmente modificare l'indirizzo iniziale della lista (testa). 
Ho questa struttura dati: 
typedef struct numero numero;
/* struttura della lista */
struct numero {
    int valore;
    struct numero *prossimo;
};
Ho scritto questa funzione ma non va:
int cancellaPrimiValoriPari (numero *testa) {
    numero *obsoleto = NULL;
    int numeroCancellati = 0;
    while (testa->valore % 2 == 0) {
        obsoleto = testa;
        testa = testa->prossimo;
        free (obsoleto);
        numeroCancellati++;
    }
    return numeroCancellati++;
} 
Ho capito che devo usare, nella suddetta funzione, un doppio puntatore a numero ma non capisco come usarlo….
Nel main() invocherei la funzione così:
printf ("\nHo cancellato %d valori\n", cancellaPrimiValoriPari (&testa));
L'intestazione della funzione dovrebbe diventare questa:
int cancellaPrimiValoriPari (numero **testa)
Ma poi non so come usare il doppio puntatore, ho provato a fare dei tentativi ma non è il modo giusto, vorrei capire il funzionamento (e cmq non mi funziona lo stesso)