• Non ci sono risultati.

Laboratorio di Algoritmi e Strutture Dati ESAME FINALE 12/12/2001 (Compito B – seconda parte) PRIMA PARTE B.A.1

N/A
N/A
Protected

Academic year: 2021

Condividi "Laboratorio di Algoritmi e Strutture Dati ESAME FINALE 12/12/2001 (Compito B – seconda parte) PRIMA PARTE B.A.1"

Copied!
1
0
0

Testo completo

(1)

Laboratorio di Algoritmi e Strutture Dati ESAME FINALE 12/12/2001

(Compito B – seconda parte)

PRIMA PARTE

B.A.1 Si descriva il funzionamento dell’algoritmo di ordinamento heap_sort applicando l’algoritmo alla sequenza:

<5, 11, 3, 6, 2, 7, 9>

B.A.2 Si descriva il funzionamento dell’algoritmo di ordinamento insertion_sort applicando l’algoritmo alla sequenza:

<5, 11, 3, 6, 2, 7, 9>

B.A.3 Si descriva una procedura iterativa per la visita in profondità di un albero binario.

B.A.4 Sia dato un array di 100 interi per realizzare una tabella hash, e siano definite le seguenti funzioni:

int h1(char* s) = cat(cod(s[0]), cod(s[1]), …, cod(s[n-1]))%100 int h2(char* s) = (cod(s[0]) + cod(s[1]) + … + cod(s[n-1]))%100

dove cod è la funzione che codifica come un intero un carattere come segue:

cod(A) = 01, cod(B) = 02, …, cod(M) = 11, cod(N) = 12, … e cat ottiene un intero mediante concatenazione di altri interi, nel seguente modo:

cat(01, 02, 14) = 010214

Ad esempio, h1(ABCD) = cat(01,02,03,04)%100 = 1020304%100 = 4 e h2(ABCD) = (01+02+03+04) %100 = 10%100 = 10 Dire quale delle due funzioni è migliore e giustificarne i motivi.

B.B.1 Si scriva un programma per la gestione degli ambulatori di un pronto soccorso, assumendo che:

1) Il numero di ambulatori non è un parametro del problema, ma è fissato.

2) Ogni persona in attesa è identificata da una struttura che contiene il nome, il numero di tesserino sanitario, la patologia e la priorità associata a tale patologia.

3) La persona con più alta priorità è la prossima ad accedere a un ambulatorio.

4) Ogni persona viene fatta accomodare nell’ambulatorio che si libera prima.

[Bisogna realizzare le funzioni di inserimento nella coda di attesa e di estrazione di un elemento. Il programma deve controllare continuamente lo stato – libero/occupato – degli ambulatori. Solo quando uno di essi è trovato libero, si procede con l’estrazione dalla coda del prossimo paziente, e la sua assegnazione all’ambulatorio libero].

B.C.1 Si discutano i principali vantaggi nella realizzazione di un dizionario tramite tabelle hash.

Riferimenti

Documenti correlati

IL SANTO DAIME E TURISMO

Ad esempio, la fusione delle due comitive “fan della sabbia” (in cui sono presenti Mario, Pino e Aldo) e “fan del mare chiaro ” (Giuseppe e Vinicio) dà luogo alla

L’algoritmo effettua una divisione del tempo in intevalli di uguale ampiezza, e verifica in ogni intervallo la priorità associata a ogni processo, quindi sceglie quello più

Si supponga inoltre definita come globale la variabile struct node* root; scrivere una funzione int height(struct node * root) che calcoli l’altezza dell’albero;.. A.B.2)

Si supponga inoltre definita globale la variabile struct nodo* root; Scrivere una funzione int max_occur() che, eseguendo una ricerca in ampiezza, trovi il numero più

C.B.1) Sia definito globale un array int A[n]; si scriva una funzione void insertion_sort(…) ricorsiva che ordini in modo crescente gli elementi di A [SUGGERIMENTO: per ordinare

si descriva in linguaggio C l’implementazione dell’operazione di cancellazione di un elemento dall’albero puntato da root (si consideri data l’operazione visita per la ricerca

C.A.3 La rappresentazione “figlio-sinistro, fratello-destro” di un albero n-ario prevede che ogni nodo sia collagato come in figura:. Si descriva una procedura di