Una struttura dati è un modo sistematico di organizzare i dati utilizzati da un algoritmo. Un fatto importantissimo per una buona pratica della programmazione è che progettando strutture dati adatte, la progettazione di un algoritmo risulta grandemente semplificata.
L' idea di struttura è quella di raggruppare un certo insieme di dati che logicamente sono collegati in un' unità per molti versi analoga al concetto di scheda. Una scheda (in uno schedario) è un foglio sul quale sono riportate, in un formato prefissato e identico per tutto lo schedario, un certo numero di informazioni. Se per esempio si stesse scrivendo un programma che gestisce una biblioteca, sarebbe opportuno mantenere insieme i dati relativi a ciascun volume, come la segnatura (un numero progressivo), il titolo (un vettore di caratteri), l'anno di pubblicazione, e il numero di copie possedute dalla biblioteca. Separatamente, le variabili per contenere questi dati potrebbero essere dichiarate come:
Per raggruppare questi dati in una struttura, in C si utilizza una sintassi che per prima cosa specifica che cosa la struttura contiene, in modo che il compilatore sappia quanto spazio di memoria deve riservare per essa, e quindi dichiara una variabile che servirà per riferirsi a tali dati:
In pratica un_libro è dichiarato come una variabile del tipo
struttura. Per fare riferimento a un campo particolare di una struttura si scrive
il nome della struttura seguito da un punto, seguito dal nome del campo:
un_libro.segnatura,
Questo può essere utilizzato esattamente come si userebbe una variabile. La
definizione di una struttura è, a tutti gli effetti, come la definizione di
un nuovo tipo, a cui, se serve, si può anche dare un nome:
"struct Libro" (in C) potrà quindi essere usato esattamente
come si userebbe int o char, compreso per definire vettori di strutture, come:
Libro scaffale [100];
che definisce scaffale come un vettore di cento libri.
Lo scopo di definire un tipo di dati e di dichiarare in seguito che certe variabili sono di quel tipo, è quello di fissare una volta per tutte il dominio dei valori che tali variabili possono assumere. Ci sono però casi in cui la struttura, per rappresentare informazioni più complesse, ha la necessità di cambiare durante l' elaborazione. Per rappresentare queste informazioni sono necessarie delle strutture dati dinamiche. I costituenti di base di queste strutture dovranno essere strutture statiche. E' il modo in cui questi costituenti sono organizzati e collegati tra loro che renderà queste strutture dinamiche. La struttura dinamica di conseguenza, dovrà essere definita facendo uso del concetto di puntatore (che in C e C++ si dichiara facendo seguire all' identificatore del tipo l'asterisco *) o di riferimento (un' evoluzione del concetto di puntatore utilizzato in Java). In sostanza, invece di contenere componenti del suo stesso tipo, la struttura dati conterrà dei puntatori a variabili del suo stesso tipo. La struttura "Termine", quindi potrà essere correttamente definita, in C o C++, come:
Graficamente una struttura di questo tipo può essere illustrata nel seguente modo:
Per saperne di più consulta i seguenti approfondimenti:
Tutto quanto riportato in questa pagina è a puro scopo informativo personale. Se non ti trovi in accordo con quanto riportato nella pagina, vuoi fare delle precisazioni, vuoi fare delle aggiunte o hai delle proposte e dei consigli da dare, puoi farlo mandando un email. Ogni indicazione è fondamentale per la continua crescita del sito.