Oggi illustreremo quale (una volta deciso l'algoritmo necessario per risolvere il nostro problema da automatizzare) struttura dati utilizzare. Analizzeremo in forma teorica e grafica ogni aspetto della loro implementazione e ne evidenzieremo i pregi che li caratterizzano.

Tutte le immagini che ci aiuteranno a comprendere meglio i concetti esposti, sono state realizzate dal grafico Davide De Marco.
La prima struttura (di tipo statica) che analizzeremo che di sicuro è la più conosciuta sia dagli esperti informatici che dai "simpatizzanti", anche perchè dettagliatamente illustrata in tutti i percorsi scolastici è il vettore (array).

Questo tipo di struttura è unidimensionale, il numero di elementi che compone questa struttura è finito, limitato e corrispondente alla sua capacità (che può essere potenziale e non coincidere come vedremo successivamente con la dimensione reale). Evidenziamo questo aspetto con la seguente immagine nella successiva struttura. Si noterà subito una dimensione reale che può al massimo raggiungere la capacità dichiarata. 

Il primo elemento avrà indirizzo/posizione 0, quindi Vettore[0] (nel nostro disegno al posto del nome Vettore è utilizzato V) mentre l´ultimo Vettore[dimensione massima -1] (nel disegno alla Dimensione massima corrisponde Dim). Sarebbe ottimale realizzare un algoritmo che gestisca solo gli elementi effettivamente utilizzati. Per accedere ad un elemento in modo diretto basta conoscere il suo indirizzo. Il terzo elemento si potrà modificare direttamente nel seguente modo.

Quando si deve inserire un nuovo valore, viene inserito o in coda o nella posizione ottimale/ordinata (nel  caso che la struttura lo sia), in questo caso l'inserimento va gestito traslando gli elementi successivi (in modo logicamente similare alla figura illustrata, sempre se esiste lo spazio disponibile, altrimenti va sovrascritto qualche elemento.

PILA e CODA

Con le strutture come gli array unidimensionali, entrano in campo le gestioni a Pila (LIFO: Last In -- First Out) e a Coda (FIFO: First In - First Out).

 Nel caso in cui si debba utilizzare una struttura per gestire un ufficio postale o in generale un gestore di richieste in base all'orario in cui l'utente ha eseguito la richiesta utilizzeremo la metodologia FIFO, il primo che ha eseguito la richiesta verrà gestito. Nel caso bisogna servire le ultime richieste fino alla prima utilizzeremo una struttura LIFO.

Lista Concatenata

La struttura concatenata è dinamica. Di conseguenza, i suoi elementi possono essere collocati in qualsiasi parte della memoria. Ogni suo elemento contiene oltre all´informazione un indicatore o meglio un puntatore all'elemento logicamente successivo, precedente (ambedue in alcuni casi). L´ultimo elemento, non avendo successori, avrà come puntatore il valore nullo (NULL). 

Quando necessario, si può generare una catena bidirezionale (una che va da sinistra verso destra e una che va da destra verso sinistra) che chiude la lista, dando come primo elemento visto da sinistra e come ultimo elemento visto quello da destra. Una semplice lista concatenata sequenziale viene esaminata, un elemento successivo all´altro.

Anche in fase di ricerca si parte dal primo elemento.
Quando si effettua un inserimento il puntatore dell´elemento precedente al nuovo da inserire punterà a quest'ultimo, mentre quello del nuovo elemento inserito punterà al successivo del precedente.

Per la cancellazione di un elemento si fa muovere il puntatore del suo precedente al suo successivo

Lista Doppia Concatenata

Utilissima la possibilità di poter utilizzare una lista doppia, che lavori in ambedue i sensi.

Lista con Sentinella

Ancora meglio se vi si aggiunge la sentinella, in modo che si crei un cerchio chiuso senza NULL.

Struttura dati Bidimensionale (Matrice)

Gli array possono essere multidimensionali, la struttura matrice è formata da un array di array (bidimensionale), ogni elemento si può distinguere in base alla riga e alla colonna. Tutti gli elementi che la compongono sono immediatamente raggiungibili utilizzando queste coordinate.

Vettore [0] [8] -- >  in base al linguaggio di programmazione utilizzato il primo numero rappresenterà le righe e il secondo le colonne o viceversa.
Se si deve eliminare un elemento basta sovrascriverlo con un altro valore o spostarlo in un area realizzata a progetto di appoggio.
Possiamo immaginare questa struttura tramite i puntatori, in modo che non abbia dimensioni prefissate sotto alcuni aspetti.

Struttura Dati Tridimensionale

Stesso discorso possiamo farlo per gli array tridimensionali come illustrato nelle due figure successive.

Albero

Un Albero Binario è una struttura concatenata dove ogni elemento possiede un doppio puntatatore, uno per il figlio destro ed uno per il  sinistro e la ricerca di un elemento è nettamente superiore in termini di velocità rispetto alla struttura precedente.

 Se utilizzeremo gli alberi non binari, avremo una delle più eccezionali forme di struttura dati concatenata.

Grafo

La struttura di sicuro maggiormente completa è il grafo che chiude (nel nostro esempio) in una maglia completa tutti gli elementi della lista concatenata.

Su 360bitnews.it

360bitnews.it è un sito rivolto a tutti gli appassionati del mondo ICT, esperti e non, che amano questo mondo a 360 gradi.
Programmazione, Progettazione, Reti, Sicurezza, Arduino, RaspBerry e tanto altro: argomenti degli articoli e delle news di ogni giorno, sempre al passo con i tempi, cercando di raccogliere il maggior numero di consensi e riuscire a coinvolgere  un numero sempre maggiore di persone. Come ogni progetto che vuole evolversi, puntiamo all'eccellenza e quindi vogliamo che i migliori professionisti collaborino con noi.

Contattaci

Sede

Ufficio Principale
Via Walter Tobagi 19 - 87100 CS
Email Consulenze
assistenza@answersandsolutions.it
webmaster@ilportaleinformatico.it

Ultime news

Per i tuoi annunci

Aumenta la visibilità

La tua azienda è del setrore ICT? Vuoi valorizzare ed esporre un tuo servizio o un tuo prodotto? Scrivici.

Flessibilità

Hai bisogno di realizzare soluzioni ICT su misura per la tua azienda? Scrivici.

Collabora con noi

Vuoi scrivere del mondo ICT sul nostro sito? Scrivici ed invia la tua candidatura.

Video or Banner Ads

Vuoi sponsorizzare la nostra iniziativa? Scrivici.