informatica:sol:laboratorio12:esercitazioni:esercitazione1
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Prossima revisione | Revisione precedente | ||
informatica:sol:laboratorio12:esercitazioni:esercitazione1 [20/02/2012 alle 09:23 (14 anni fa)] – creata Susanna Pelagatti | informatica:sol:laboratorio12:esercitazioni:esercitazione1 [24/02/2012 alle 12:03 (14 anni fa)] (versione attuale) – [Esercizio 3: map e reduce su liste] Susanna Pelagatti | ||
---|---|---|---|
Linea 50: | Linea 50: | ||
===== Esercizio 2: liste concatenate di interi ===== | ===== Esercizio 2: liste concatenate di interi ===== | ||
+ | |||
+ | Implementare in C le seguenti funzioni che lavorano su liste concatenate di interi di tipo | ||
+ | <code c> | ||
+ | typedef struct nodo { | ||
+ | int valore; | ||
+ | struct nodo * next; | ||
+ | } nodo; | ||
+ | |||
+ | typedef nodo * lista; | ||
+ | </ | ||
+ | |||
+ | e definire le seguenti funzioni che operano sulla lista | ||
+ | <code c> | ||
+ | /** crea una lista vuota | ||
+ | | ||
+ | lista newList (void); | ||
+ | |||
+ | /** dealloca la lista | ||
+ | \param l la lista | ||
+ | */ | ||
+ | void freeList (lista l); | ||
+ | |||
+ | /** iserisce n nella lista l creando un nuovo nodo | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | */ | ||
+ | lista insertList (lista l, int n); | ||
+ | |||
+ | /** cancella n dalla lista (se c' | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | */ | ||
+ | lista removeList (lista l, int n); | ||
+ | |||
+ | </ | ||
+ | Testare il funzionamento delle funzioni implementate con un opportuno '' | ||
+ | |||
+ | ===== Esercizio 3: map e reduce su liste ===== | ||
+ | |||
+ | Usando le liste dell' | ||
+ | <code c> | ||
+ | /** trasforma una lista applicando ad ogni elemento la funzione f | ||
+ | | ||
+ | | ||
+ | |||
+ | */ | ||
+ | void mapList (int (*f) (int), lista l); | ||
+ | |||
+ | /** combina gli elementi della lista l usando un operatore binario associativo | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | int reduceList(int (*f) (int,int), int en, lista l); | ||
+ | </ | ||
+ | |||
+ | Testare il risultato con un opportuno main. | ||
+ | |||
+ | ===== Esercizio 4: Libreria di liste ===== | ||
+ | |||
+ | Realizzare una libreria che fornisce le operazioni su liste implementate negli esercizi 1 e 2. | ||
+ | In C tipicamente per realizzare una libreria si difinisce un file '' | ||
+ | |||
+ | Nel nostro caso l' | ||
+ | |||
+ | Procedere nel modo seguente: | ||
+ | |||
+ | * Definire un file '' | ||
+ | * Definire un file '' | ||
+ | * Generare il modulo oggetto '' | ||
+ | < | ||
+ | $ gcc -Wall -pedantic -c lista.c | ||
+ | </ | ||
+ | * Creare la libreria con i lcomando '' | ||
+ | < | ||
+ | $ ar -r libList.a lista.o | ||
+ | </ | ||
+ | |||
+ | Quando la creazione e' andata a buon fine creare un file '' | ||
+ | * il main di test dovra' includere il file '' | ||
+ | * in fase di compilazione utilizzare la libreria sviluppata con | ||
+ | < | ||
+ | $ gcc -Wall -pedantic main.c -lList -L. | ||
+ | </ | ||
+ | dove l' | ||
+ | . | ||
+ | |||
+ | |||
informatica/sol/laboratorio12/esercitazioni/esercitazione1.1329729781.txt.gz · Ultima modifica: 20/02/2012 alle 09:23 (14 anni fa) da Susanna Pelagatti