• Non ci sono risultati.

Scrivere in forma leggibile il proprio nome, cognome e matricola sul testo del compito e su ogni foglio consegnato;

N/A
N/A
Protected

Academic year: 2021

Condividi " Scrivere in forma leggibile il proprio nome, cognome e matricola sul testo del compito e su ogni foglio consegnato;"

Copied!
3
0
0

Testo completo

(1)

Esame di Algoritmi e Strutture di Dati I Mercoled`ı 30 Luglio 2003

Nome:

Cognome:

Matricola:

 Scrivere in forma leggibile il proprio nome, cognome e matricola sul testo del compito e su ogni foglio consegnato;

 Consegnare solo la bella copia e il testo del compito;

 Non `e possibile consultare alcun tipo di materiale didattico;

 Non `e possibile uscire dopo l’inizio dello scritto.

Esercizio 1 (Punti 30)

Una tabella a indirizzamento diretto `e un vettore T [0, . . . , n] che con- tiene in posizione i un puntatore all’oggetto con chiave i, se tale oggetto `e pre- sente in tabella, oppure NIL, se tale oggetto non `e presente in tabella. Scrivere le seguenti procedure e valutarne la complessit`a pessima:

1. N ext(T, i) che ritorna la posizione nella tabella T in cui si trova l’oggetto con chiave pi`u piccola tra quelli che hanno chiave maggiore di i, oppure NIL se tale oggetto non esiste;

2. P rev(T, i) che ritorna la posizione nella tabella T in cui si trova l’oggetto con chiave pi`u grande tra quelli che hanno chiave minore di i, oppure NIL se tale oggetto non esiste.

Utilizzando le procedure Next e Prev, scrivere le seguenti procedure valutan- done la complessit`a:

1. M ax(T ) che ritorna la posizione nella tabella T in cui si trova l’oggetto con chiave massima tra quelli presenti in tabella, oppure NIL se T non contiene alcun oggetto;

2. M in(T ) che ritorna la posizione nella tabella T in cui si trova l’oggetto con chiave minima tra quelli presenti in tabella, oppure NIL se T non contiene alcun oggetto;

1

(2)

Soluzione

Algoritmo 1 Next(T,i) Next(T,i)

1:

j ← i + 1

2:

while j ≤ n and T [j] = NIL do

3:

j ← j + 1

4:

end while

5:

if j ≤ n then

6:

return j

7:

else

8:

return NIL

9:

end if

Algoritmo 2 Prev(T,i) Prev(T,i)

1:

j ← i − 1

2:

while j ≥ 0 and T [j] = NIL do

3:

j ← j − 1

4:

end while

5:

if j ≥ 0 then

6:

return j

7:

else

8:

return NIL

9:

end if

2

(3)

Algoritmo 3 Max(T) Max(T)

1:

return P rev(T, n + 1)

Algoritmo 4 Min(T) Min(T)

1:

return N ext(T, −1)

Tutte le procedure hanno complessit`a pessima Θ(n).

3

Riferimenti

Documenti correlati

ISTRUZIONI: Prima di tutto, su ogni foglio che consegnerai devi scrivere, in stampatello, nome, cognome e numero di matricola.. Devi riconsegnare anche il testo dell’esame (cio`

• La valutazione dello svolgimento degli esercizi verra’ utilizzata per la valutazione finale, in sede di esame finale del corso. • Consegnare i seguenti fogli stampati e

• La valutazione dello svolgimento degli esercizi verra’ utilizzata per la valutazione finale, in sede di esame finale del corso. • Consegnare i seguenti fogli stampati e

• La valutazione dello svolgimento degli esercizi verra’ utilizzata per la valutazione finale, in sede di esame finale del corso. • Consegnare i seguenti fogli stampati e

Modificare opportunamente la struttura di dati tabella ad indirizzamento diretto in modo che possa contenere pi`u oggetti con la medesima chiave (ma con dati satellite

Scrivere in forma leggibile il proprio nome, cognome e matricola sul testo del compito e su ogni foglio consegnato.. Consegnare solo la bella copia e il testo

Accuratezza richiesta Valore dell’ integrale Stima errore assoluto Errore

Quesito F (punti 3) Trovare le radici dell’ equazione e −x 2 sin(2πx) = 0 nell’ intervallo [0, 1] utilizzando degli opportuni comandi Matlab o il metodo delle secanti..