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)