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.