La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Politecnico di Milano Esercizi Le liste dinamiche La ricorsione.

Presentazioni simili


Presentazione sul tema: "Politecnico di Milano Esercizi Le liste dinamiche La ricorsione."— Transcript della presentazione:

1 Politecnico di Milano Esercizi Le liste dinamiche La ricorsione

2 - 2 - Le liste dinamiche

3 - 3 - Le liste dinamiche #include struct Elem { int dato; struct Elem *prox; }; typedef struct Elem ElementoLista; typedef ElementoLista *Lista; Lista inserisciInLista (Lista lista, int dato); void scriviLista (Lista lista); Lista cancellaLista (Lista lista);

4 - 4 - Le liste dinamiche Lista laMiaLista = NULL; void main() { unsigned int num, i; int d; printf ("Quanti dati? "); scanf ("%u", &num); for (i = 0; i < num; i++) { printf ("Dato: "); scanf ("%d", &d); laMiaLista=inserisciInLista(laMiaLista,d); } scriviLista (laMiaLista); laMiaLista = cancellaLista (laMiaLista); scriviLista (laMiaLista); }

5 - 5 - Le liste dinamiche Lista inserisciInLista (Lista lista, int dato) { Lista nuovoElem; nuovoElem=(Lista)malloc(sizeof(ElementoLista)); nuovoElem->dato = dato; nuovoElem->prox = lista; return nuovoElem; }

6 - 6 - Le liste dinamiche void scriviLista (Lista lista) { Lista cursore; cursore = lista; while (cursore != NULL) { printf ("%d\n", cursore->dato); cursore = cursore->prox; } printf ("Fine\n"); }

7 - 7 - Le liste dinamiche Lista cancellaLista (Lista lista) { Lista temp, cursore; cursore = lista; while (cursore != NULL) { temp = cursore->prox; free (cursore); cursore = temp; } return cursore; }

8 - 8 - Fattoriale Lutente inserisce alcuni numeri naturali e lelaboratore ne calcola il fattoriale Ricordiamo che i fattoriale è definito come: n! = 1 sse n = 0 n! = n·(n – 1)! sse n > 0 Usiamo la definizione Algoritmo ricorsivo

9 - 9 - Fattoriale #include long int fatt (unsigned int n); void main() { unsigned int n, j, max; printf ("Quanti numeri?: "); scanf ("%u", &max); for (j = 1; j <= max; j++) { printf ("Introduci numero naturale: "); scanf ("%u", &n); printf ("Fattoriale: %lu\n", fatt (n)); } }

10 Fattoriale long int fatt (unsigned int n) { long int tot; if (n == 0) { tot = 1; } else { tot = n * fatt (n – 1); } return tot; }

11 Fattoriale tot=1 n=3n=2n=1 n=0 tot=n*1 tot=n*2 6 3


Scaricare ppt "Politecnico di Milano Esercizi Le liste dinamiche La ricorsione."

Presentazioni simili


Annunci Google