25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

396 Puntatori<br />

value<br />

pointer ❄<br />

❄ pointer<br />

Figura 7.3: Generico nodo di albero binario<br />

root<br />

parent<br />

parent<br />

child · · ·<br />

child · · ·<br />

child · · ·<br />

child · · ·<br />

leaf<br />

leaf<br />

leaf<br />

leaf<br />

leaf<br />

leaf<br />

leaf<br />

leaf<br />

Figura 7.4: Schema di albero binario<br />

di ordinamento. Tale ordinamento viene espresso a mezzo di una coppia di puntatori detti<br />

puntatore sinistro e puntatore destro (o anche puntatore precedente e puntatore successivo).<br />

L’elemento puntato dal puntatore sinistro precede, secondo la relazione di ordinamento applicata,<br />

l’elemento in esame, viceversa l’elemento puntato dal puntatore destro segue l’elemento in<br />

esame. Se ne deduce che un nodo debba rappresentare una struttura composta dal dato (o dai<br />

dati) da gestire e da una coppia di puntatori a oggetti dello stesso tipo. In un albero binario<br />

così definito, ciascun elemento è maggiore di tutti gli elementi appartenenti al sotto-albero ”inferiore”<br />

(o ”sinistro”) e minore di quelli appartenenti al sotto-albero ”superiore” (o ”destro”). Da<br />

tali proprietà discendono in modo naturale gli algoritmi di ricerca, inserimento e prelievo degli<br />

elementi dell’albero. Ciò rende particolarmente efficiente le operazioni di ricerca attraverso le<br />

visite dell’albero e le operazioni di ordinamento.<br />

Naturalmente su una struttura ad albero sarà possibile definire procedure elementari di<br />

inizializzazione dell’albero, inserimento di un nodo, estrazione di un nodo, stampa dell’elenco<br />

completo. Inoltre sarà necessario prevedere la definizione di predicati logici atti a verificare<br />

se l’albero è vuoto (ossia da se è da inizializzare) e se un dato elemento è o meno presente<br />

nell’albero.<br />

L’esempio che segue mostra con quanta naturalezza le operazioni su un albero binario possano<br />

essere espresse mediante procedure ricorsive e l’impiego di oggetti di tipo derivato (definenti

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!