fisica:informatica:201415:esercitazioni:esercitazione8
Questa è una vecchia versione del documento!
−Indice
Esercizi liste
Esercizio 1: Sequenze di double
Consideriamo il problema di leggere da standard input una sequenza di valori reali terminata da 0.0 creando la lista corrispondente di tipo
typedef struct lista_d { double val; struct lista_d * next; } lista_d_t ;
- sviluppare un programma C che legge gli elementi dallo standard input usando una funzione
double leggi_nuovo_valore(void)
inserendo ogni nuovo valore in testa alla lista e poi stampa la lista risultante sullo standard output * Modificare il precedente programma in modo da inserire ogni nuovo valore in coda alla lista stampando la lista risultante sullo standard output
Esercizio 2: Funzioni di inserzione su liste di double
Consideriamo le funzioni
lista_d_t * inserisci_testa ( lista_d_t * l, double v); lista_d_t * inserisci_coda ( lista_d_t * l, double v); lista_d_t * inserisci_ord ( lista_d_t * l, double v);
discusse nella lezione sulle liste.
- implementare le funzioni in modo iterativo sviluppando un programma main le utilizza per leggere una lista dallo standard input e stamparla ordinata sullo standard output
- implementare le funzioni in modo ricorsivo e verificare che il main sviluppato nel punto precedente continui a funzionare corerttamente
Esercizio 3: Altre funzioni su liste di double
Implementare le seguenti funzioni:
/** calcola e restituisce il massimo della lista l */ double max ( lista_d_t * l); /** calcola e restituisce la somma di tutti gli elementi della lista l*/ double somma ( lista_d_t * l); /** libera la memoria occupata dalla lista */ void fee_list( lista_d_t * l); /** cancella, se presente, l'elemento che contiene la prima occorrenza del valore val dalla lista l(liberando la memoria sullo heap) e restituisce la nuova lista */ lista_d_t * cancella ( lista_d_t * l, double v);
e sviluppare un main() che ne testa il funzionamento.
Esercizio 4: Verificare i memory leak con ''mcheck''
Verificare che prima di uscire dal main tutta la memoria sia stata correttamente deallocata utilizzando l'utility mcheck().
fisica/informatica/201415/esercitazioni/esercitazione8.1422968913.txt.gz · Ultima modifica: 03/02/2015 alle 13:08 (10 anni fa) da Susanna Pelagatti