• Non ci sono risultati.

Laboratorio di Algoritmi e Strutture DatiLaboratorio di Algoritmi e Laboratorio di Algoritmi e Strutture DatiStrutture Dati

N/A
N/A
Protected

Academic year: 2021

Condividi "Laboratorio di Algoritmi e Strutture DatiLaboratorio di Algoritmi e Laboratorio di Algoritmi e Strutture DatiStrutture Dati"

Copied!
4
0
0

Testo completo

(1)

1

Murano Aniello - Lab. di ASD

Decima Lezione 1

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Laboratorio di Algoritmi e

Strutture Dati Strutture Dati

Aniello Murano Aniello Murano http://

http://people.na.infn.itpeople.na.infn.it//~murano~murano//

Murano Aniello - Lab. di ASD

Decima Lezione 2

Esercitazione di laboratorio:

Esercitazione di laboratorio:

Gestione di liste indipendente Gestione di liste indipendente

dall’ dall ’implementazione. implementazione.

(2)

2

Murano Aniello - Lab. di ASD

Decima Lezione 3

Esercizio 1/4

Si supponga di dover gestire una sequenza di numeri interi su cui realizzare le seguenti operazioni:

1. Creazione e riempimento di una struttura dati contenente la sequenza

9 Esempio: Volendo gestire la seguente sequenza di 5 elementi:

1,3,5,4,2, chiedere in input tutti gli elementi e memorizzarli nella struttura.

2. Ricerca di un elemento indicando la sua posizione nella sequenza

9 Esempio: Si consideri di operare sulla sequenza 1,3,5,4,2.

Volendo cercare il valore 5, la ricerca restituirà “l’elemento è nella posizione 3”. Volendo invece ricercare l’elemento 7, la ricerca restituirà “l’elemento non è presente nella sequenza”.

Murano Aniello - Lab. di ASD

Decima Lezione 4

Esercizio 2/4

3. Dati due valori in input a e b, se b è presente nella sequenza, inserire a subito prima di b (prima occorrenza) altrimenti inserire a all’inizio della sequenza.

9 Esempio: Si consideri di operare sulla sequenza 1,3,5,4,2.

Volendo inserire 2 prima di 3, il risultato sarà 1,2,3,5,4,2.

Volendo ancora inserire 3 prima di 7 il risultato sarà 3,1,2,3,5,4,2.

4. Cancellazione di tutte le occorrenze di un elemento nella sequenza.

9 Esempio: Si consideri di operare sulla sequenza 3,1,2,3,5,4,2 e di voler cancellare l’elemento 2, il risultato sarà 3,1,3,5,4.

5. Stampa della sequenza corrente.

(3)

3

Murano Aniello - Lab. di ASD

Decima Lezione 5

Esercizio 3/4

Implementare le 4 operazioni precedenti in linguaggio C utilizzando alternativamente come struttura dati di appoggio un array di interi e una struttura a puntatori:

¾ Nel primo caso, la sequenza di interi sarà memorizzata in un array di MAX=10 elementi. Quindi, attenzione a non memorizzare più di MAX elementi nell’array a meno di una riallocazione di memoria.

L’implementazione di tutte le funzioni relative deve essere memorizzata in un unico file .c (ad esempio array.c)

¾ Nel secondo caso, la sequenza di interi sarà memorizzata in un lista a puntatori semplice e non circolare. L’implementazione di tutte le funzioni deve essere memorizzata in un altro file .c (ad esempio lista.c)

Murano Aniello - Lab. di ASD

Decima Lezione 6

Esercizio 4/4

Scrivere in C un programma che indipendentemente dalla struttura dati utilizzata implementi l’operazione 1 e iterativamente a scelta le operazioni 2, 3, 4 e 5 descritte precedentemente.

Correttezza dell’elaborato:

¾ Il programma principale deve funzionare in modo indipendente dalla struttura dati utilizzata. Ad esempio, una volta creati i due file array.c e liste.c, il programma principale deve eseguire correttamente tutte le operazioni descritte in precedenza sia nel caso che esso venga linkato con array.c che con lista.c

¾ Il programma principale deve essere completamente indipendente dalla scelta della struttura dati utilizzata.

¾ L’eventuale documentazione allegata non deve superare le 2 pagine

(4)

4

Murano Aniello - Lab. di ASD

Decima Lezione 7

Facoltativo…

Si può pensare di creare anche due file array.h e lista.h con i seguenti compiti:

array.h deve includere la definizione della struttura dati array e i soli prototipi delle funzioni implementate in array.c

lista.h deve includere la definizione della struttura dati a puntatori (lista semplice non circolare) e i soli prototipi delle funzioni implementate in lista.c

Dunque, per la verifica di correttezza, il programma principale deve funzionare correttamente sia in caso di collegamento con array.h e array.c, e sia nel caso di collegamento con lista.h e lista.c

Riferimenti

Documenti correlati

In pratica, modellando la cartina dell’Italia come un grafo orientato pesato G=(V, E), dove ciascun vertice rappresenta una città, ogni arco (u,v) rappresenta una strada diretta da

Matrici di adiacenza: se l elemento di indici i, j della matrice di adiacenza è un valore diverso da 0 esso è il peso dell arco (i,j), altrimenti non esiste un arco fra i nodi i e

Scrivere in linguaggio C un programma che implementi le operazioni precedenti indipendentemente dal fatto che la struttura dati di appoggio sia un grafo

L’inizio della coda è rappresentato dalla prima persona della fila (quella la prossima ad essere servita), mentre la fine della coda è rappresentata dall’ultima persona che si

Infine, se la lista è doppiamente puntata, il puntatore prev della testa della lista punta all’elemento in coda

Un albero binario è una tipo astratto di dato che o è vuoto (cioè ha un insieme vuoto di nodi) o è formato da un nodo A (detto la radice) e da due sottoalberi, che sono a loro

Riversamento dei dati contenuti nell’heap nell’albero binario di ricerca utilizzando una visita lineare dell’array. Stampare i dati contenuti nell’albero binario di

La classe di memoria automatica è relativa a quegli oggetti locali ad un blocco (funzione o programma) che viene liberata non appena si raggiunge la fine di quel blocco. La classe