[C] Liste dinamiche in c ( Informatica )

Esercizio 1 – Liste dinamiche (8 punti)

Scrivere una funzione in C che data una lista dinamica la modifichi eliminando tutti gli elementi di posizione pari nella sequenza.

Download Codice



Esercizio 4 – Liste dinamiche (10 punti)

Sia data una lista dinamica che memorizza una sequenza di abbreviazioni (per esempio, “SI”, “MI”, “PC”) e per ognuna di esse le corrispondenti parole estese (per esempio, “Sistema Informativo”, “Milano”, “Per Conoscenza”). 

Ogni nodo della lista è quindi una struttura definita nel seguente modo:

struct nodo {

    char sigla[2];

    char parola[20];

    struct nodo *next;

}

Si scriva una funzione in C che riceve come parametri il puntatore alla testa della lista (la lista non deve essere creata, si suppone che esista già in memoria), una abbreviazione e la parola corrispondente e ricerca l’abbreviazione nella lista; quindi:

1. Se la sigla non è presente nella lista, inserisce in coda alla lista un nuovo elemento per memorizzare la sigla e la parola estesa ricevute come parametro e restituisce 0; per esempio, se la lista contiene le coppie sopra citate (<“SI”, “Sistema Informativo” >, <“MI”, “Milano” >, <“PC”, Per Conoscenza>) e la sigla da cercare è “CC”, allora la funzione restituirà il valore 0.

2. Se la coppia <sigla, parola> è presente nella lista, la funzione restituisce 1; per esempio se la funzione riceve come parametri “SI” e “Sistema Informativo” allora restituisce il valore 1;

3. Se la sigla è contenuta nella lista ma è associata a una parola differente, la funzione restituisce 2; per esempio, data la lista precedente, se la funzione riceve come parametri “SI” e “Sicurezza Informatica”, allora restituisce il valore 2.

Download Codice




Esercizio 12 – Liste dinamiche in C (10 punti)

Si vuole gestire in C una lista dinamica in cui ogni elemento memorizza un valore intero, il puntatore all’elemento successivo, il puntatore all’elemento della lista con valore minimo.

L’inserimento di nuovi elementi avviene in testa. A ogni inserimento, è necessario ricalcolare il minimo della lista e, in caso di nuovo valore, aggiornare i puntatori corrispondenti negli elementi della lista.

1. Definire in C le strutture dati per rappresentare ogni singolo nodo e la lista.

2. Codificare la funzione di inserimento, definendo opportuni parametri e valori di ritorno. Si consiglia distrutturare il codice della funzione in modo che faccia uso di altre funzioni ausiliarie.

Download Codice



Esercizio 15. Liste dinamiche (10 punti)

 Sia data una lista dinamica che memorizza dati riguardanti le quotazioni in borsa di alcune aziende. Gli elementi della lista rispettano la seguente definizione di tipo:

 typedef struct nodo{

 char nomeAzienda[41]; float quotazione; float variazione; struct nodo * next;

 } aziendaQuot;

 **La lista è ordinata in base al nome dell’azienda.**

 Si definisca una funzione in C che riceve come parametri la testa della lista, il nome di un’azienda e un valore per l’ultima quotazione in borsa dell’azienda, e cerchi nella lista il nodo riguardante l’azienda:

 - Se il nodo esiste, la funzione aggiorna il valore della quotazione e memorizza inoltre la variazione (differenza) rispetto al valore precedente nel campo variazione.

 - Se il nodo non esiste, lo crea e lo inserisce nella posizione opportuna della lista, rispettando l’ordinamento alfabetico. La variazione in tal caso sarà uguale a 0.

 La funzione restituisce il puntatore alla testa della lista (che potrebbe essere modificato da un inserimento in testa).

Download Codice




Esercizio 18. Uso di File e Liste Dinamiche (19 punti)

 Un numero n si dice Primo Troncabile a Sinistra (PTS) se n e tutti i numeri ottenuti cancellando ripetutamente le sue cifre più a sinistra sono primi. Per esempio, 313 è un PTS; infatti, 313 è primo, 13 è primo (è stata cancellata la prima cifra a sinistra), 3 è primo (sono state cancellate le prime due cifre a sinistra).

 Si definisca un programma in C in grado di leggere dal file una sequenza di interi e memorizzare in una lista dinamica ordinata i soli elementi che sono PTS. Il file è organizzato in modo da contenere un intero per ogni riga. Il nome del file deve essere letto come argomento della linea di comando con cui si esegue il programma.

 Il programma deve essere realizzato in modo modulare, scomponendolo almeno nelle seguenti funzioni:

 1. La funzione main, con passaggio come argomento della linea di comando del nome del file contenente gli interi (3 punti);

 2. Una funzione per verificare se un intero letto dal file è PTS. Tale funzione può anche far uso di altre funzioni, per esempio quella per verificare che un numero sia primo (8 punti).

 3. Una funzione che legga dal file gli interi e memorizzi i soli PTS in una lista dinamica. L’inserimento deve avvenire in ordine, in modo che nella lista risultante gli interi siano elencati in ordine crescente (8 punti);

Download codice


Commenti