Strumenti Utente

Strumenti Sito


fisica:informatica:201415:esercitazioni:esercitazione8

Questa è una vecchia versione del documento!


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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki