[C] Problema inversione Lista con ricorsione
Buongiorno a tutti. ho un grosso problema con questa funzione.La funzione deve invertire la lista data come parametro.
Non riesco a far ritornare al main la lista invertita e sto letteralmente impazzendo perchè non capisco l'errore... aiutatemi please!
la lista1 è la tipica struttura composta da puntatore all'elemento successivo e valore.
e poi... qualcuno ha idea di una funzione che fa il medesimo lavoro ma che non sia ricorsiva?
Non riesco a far ritornare al main la lista invertita e sto letteralmente impazzendo perchè non capisco l'errore... aiutatemi please!
la lista1 è la tipica struttura composta da puntatore all'elemento successivo e valore.
LISTA* inversionelista(LISTA* lista1) //VERSIONE RICORSIVA { LISTA*dito; LISTA *ultimo; dito=lista1; if(lista1==NULL || lista1->next==NULL) return lista1; else lista1=inversionelista(lista1->next); dito->next=dito; return lista1; }
e poi... qualcuno ha idea di una funzione che fa il medesimo lavoro ma che non sia ricorsiva?
Risposte
Ciao a te 
Per far ritornare la lista invertita, ossia come viene modificata dentro la funzione, dovrai passare un parametro di tipo LISTA** e non LISTA* altrimenti perdi appunto le modifiche. Pensaci bene: se vuoi che il tuo valore sia modificato dovrai passare un puntatore ad una variabile avente tipo LISTA*, sei d'accordo
Chiaramente dopo questa modifica dovrai riadattare leggermente anche il codice interno della funzione...

Per far ritornare la lista invertita, ossia come viene modificata dentro la funzione, dovrai passare un parametro di tipo LISTA** e non LISTA* altrimenti perdi appunto le modifiche. Pensaci bene: se vuoi che il tuo valore sia modificato dovrai passare un puntatore ad una variabile avente tipo LISTA*, sei d'accordo

Chiaramente dopo questa modifica dovrai riadattare leggermente anche il codice interno della funzione...