[C] Problema inversione Lista con ricorsione

m.fumagalli68
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.

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
onlyReferee
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...

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.