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.

402 Puntatori<br />

operazioni di ricerca. In particolare la struttura può degenerare in una lista lineare qualora<br />

gli elementi vengano inseriti proprio secondo l’ordinamento prescelto. In quest’ultimo caso si<br />

perderà del tutto il vantaggio di lavorare con una struttura binaria. Entrambe queste possibilità<br />

sono schematicamente rappresentate nelle figure 7.5(a) e 7.5(b), rispettivamente. Al<br />

fine di evitare un tale problema e ridurre, così, i tempi di ricerca, molti database prevedono<br />

la possibilità di ”disordinare” parzialmente i dati in ingresso attraverso particolari tecniche di<br />

hashing e ciò allo scopo di provvedere ad un opportuno bilanciamento dell’albero.<br />

Si vuole concludere l’argomento presentando un altro esempio di impiego di una struttura<br />

ad albero binario. Lo scopo del seguente programma è quello di leggere (da file) un elenco<br />

del tutto casuale di nominativi e numeri di telefono e di organizzare tale elenco in forma<br />

gerarchica secondo l’ordinamento lessicografico per cognome. Ciò allo scopo di favorire la<br />

procedura di ricerca di un numero telefonico concepita per un utilizzo interattivo da parte<br />

dell’utente. In questo caso ciascun nodo rappresenterà un oggetto di tipo derivato composto da<br />

tre componenti stringa (il nome, il cognome ed il numero di telefono) oltre che, chiaramente,<br />

dai due puntatori ai nodi precedente e successivo. L’ordinamento alla base dell’intera struttura<br />

rispetta l’ordinamento lessicografico ASCII applicato ai cognomi e, a parità di questi, ai nomi.<br />

MODULE btree<br />

!<br />

! Scopo: Definisce il tipo di dati del generico nodo e<br />

! dell’intero albero binario nonche’ le operazioni<br />

! di inserimento di un nodo, stampa della lista<br />

! e ricerca di un elemento. Nel modulo vengono<br />

! inoltre definiti gli operatori "" e "=="<br />

! applicabili ad elementi di tipo nodo.<br />

IMPLICIT NONE<br />

! Restrizione della visibilita’ di alcuni componenti del modulo<br />

PRIVATE<br />

PUBLIC :: node, OPERATOR(>), OPERATOR()<br />

MODULE PROCEDURE greater_than<br />

END INTERFACE

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

Saved successfully!

Ooh no, something went wrong!