• 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!
2
0
0

Testo completo

(1)

Esame di Algoritmi e Strutture di Dati Luned`ı 1 Settembre 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 presente in tabella, oppure NIL, se tale oggetto non `e presente in tabella.

1. 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 diversi).

2. Implementare le seguenti operazioni:

(a) DirectAddressInsert(T, x) che inserisce l’oggetto x nella tabella T ; (b) DirectAddressDelete(T, x) che cancella l’oggetto x dalla tabella T ; (c) DirectAddressSearch(T, k) che ritorna un puntatore ad un oggetto

qualsiasi con chiave k cercandolo in T , oppure NIL se tale oggetto non esiste.

La complessit`a pessima delle tre procedure deve essere costante.

Soluzione

Una soluzione consiste nel far puntare la posizione i della tabella ad una lista doppia eventualmente vuota che contiene tutti gli oggetti con chiave i.

1

(2)

Algoritmo 1 DirectAddressInsert(T,x) DirectAddressInsert(T,x)

1:

i ← key[x]

2:

next[x] ← T [i]

3:

prev[x] ← nil

4:

if T [i] 6= nil then

5:

prev[T [i]] ← x

6:

end if

7:

T [i] ← x

Algoritmo 2 DirectAddressDelete(T,x) DirectAddressDelete(T,x)

1:

i ← key[x]

2:

if prev[x] 6= nil then

3:

next[prev[x]] ← next[x]

4:

else

5:

T [i] ← next[x]

6:

end if

7:

if next[x] 6= nil then

8:

prev[next[x]] ← prev[x]

9:

end if

Algoritmo 3 DirectAddressSearch(T,k) DirectAddressSearch(T,k)

1:

return T [k]

2

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

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

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

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..

1b) Si scrivano le equazioni fondamentali dell’Elettrodinamica in forma covariante a vista. Si verifichi che l’equazione di Lorentz in forma covariante a vista ` e