/* Serie di funzioni, che vengono definite ricorsivamente per effettuare delle operazioni su delle liste di strutture "Nodo" "inserisci_Nodo" inserisce l'elemento "el" nella lista "lista" alla posizione "pos" "stampa" ovviamente stampa una lista "merge" fonde due liste ordinate ottenendo una nuova lista ordinata (agendo solo sui puntatori, gli elementi della nuova lista continuano ad essere quelli delle liste originarie) */ typedef struct nodo{ int val; struct nodo *next; } Nodo; Nodo *inserisci_Nodo (Nodo *el, Nodo *lista, int pos) { if (lista == NULL || pos == 0) { el->next = lista; /* corretto */ return el; } lista->next = inserisci_Nodo(el, lista->next, pos-1); return lista; } void stampa (Nodo *lista) { if (lista) { printf("%d\n",lista->val); stampa(lista->next); } } Nodo *merge (Nodo *lista1, Nodo *lista2) { if (!lista1) return lista2; if (!lista2) return lista1; if (lista1->val < lista2->val){ lista1->next = merge (lista1->next, lista2); return lista1; } else { lista2->next = merge(lista1, lista2->next); return lista2; } }-- ArcangeloTripi - 06 Dec 2002
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica |
|