#include <iostream> #include <cstdlib> using namespace std; struct Nodo { int val; Nodo *suc; }; //------------------------------------------------------------------------------ void crea_lista(Nodo **nodoPtr, int n) // funzione senza return { static int i=0; // opzionale per la stampa di supporto if (n==0) { (*nodoPtr) = NULL; } else { (*nodoPtr) = new Nodo; cout<<"Nodo "<<++i<<" valore: "; // opzionale per la stampa di supporto cin>>(*nodoPtr)->val; crea_lista(&((*nodoPtr)->suc),n-1); } } //------------------------------------------------------------------------------ Nodo *nuova_lista(int n) // funzione di creazione lista con return { static int i=0; // opzionale per la stampa di supporto if (n==0) { return NULL; } else { Nodo *nodo = new Nodo; cout<<"Nodo "<<++i<<" valore: "; // opzionale per la stampa di supporto cin>>nodo->val; nodo->suc = nuova_lista(n-1);} } //------------------------------------------------------------------------------ void stampa_lista(Nodo *nodo) { if (nodo!=NULL) { cout<<nodo->val<<" "; stampa_lista(nodo->suc); } } //------------------------------------------------------------------------------ int lunghezza_lista(Nodo *nodo) { if (nodo==NULL) { return 0; } else { return 1 + lunghezza_lista(nodo->suc); } } //------------------------------------------------------------------------------ long somma_lista(Nodo *nodo) { if (nodo==NULL) { return 0; } else { return nodo->val + somma_lista(nodo->suc); } } //------------------------------------------------------------------------------ int main() { int n; Nodo *miaLista; cout<<"NUMERO ELEMENTI DA INSERIRE NELLA LISTA: "; cin>>n; crea_lista(&miaLista,n); // alternativa con return "miaLista=nuova_lista(n); //stampa_lista(miaLista); cout<<"ELEMENTI INSERITI: "<<lunghezza_lista(miaLista)<<"\tTOTALE VALORI: "<<somma_lista(miaLista); return 0; }