Corso di Programmazione - Prova Pratica - 10 gennaio 2001


Dopo le festività natalizie vorremmo ringraziare gli amici che ci hanno inviato un biglietto di auguri. Ovviamente, il problema non si pone per quegli amici a cui a nostra volta avevamo inviato gli auguri.
Una lista di amici sarà un puntatore ad un valore di tipo ListaAmici, ovvero una lista semplice i cui elementi sono record aventi come campi il cognome, il nome e l'indirizzo di un amico:

typedef struct Amico{

char *cognome;
char *nome;
char *indirizzo;

} Amico;

typedef struct ListaAmici{

Amico amico;
struct ListaAmici *next;

}ListaAmici;


Esercizio 1: Implementare la seguente procedura:

void stampa_lista(ListaAmici *lista);

La procedura stampa_lista deve stampare a video, uno per riga, gli elementi della lista passata come parametro attuale, secondo la seguente sintassi: <cognome> <iniziale del nome> <indirizzo>


Esercizio 2: Implementare la seguente procedura:

ListaAmici* ringraziare(ListaAmici *ricevuti, ListaAmici *inviati);

La funzione ringraziare prende come parametri attuali due listedi tipo puntatore a ListaAmici, la prima contenente gli amici che ci hanno mandato gli auguri, la seconda quelli a cui noi a nostra volta abbiamo mandato un biglietto. Queste due liste si assumono essere ordinate secondo l'ordine lessicografico (per cognome e nome). La funzione deve restituire una nuova lista, anch'essa ordinata in ordine lessicografico, contenente gli elementi della prima lista che non appaiono anche nella seconda lista.


Esercizio 3: Implementare la seguente procedura:

int togli(ListaAmici **lista, Amico amico);

La funzione togli prende come parametri attuali l'indirizzo di una lista di amici, che si assume essere ordinata secondo l'ordine lessicografico, ed un valore di tipo Amico. Deve togliere dalla lista passata l'elemento con valore amico, se appartiene alla lista. La funzione restituisce 1 se amico appartiene alla lista, 0 altrimenti.


La modalità di consegna dell'esame è analoga a quella delle esercitazioni durante il corso: è sufficiente inviarlo come esercitazione numero 102. Bisogna inserire esclusivamente la definizione delle procedure, per consentirne la correzione automatica.