codice:
typedef struct
{
    int number; // informazione
    Nodo* next; // puntatore al nodo successivo
} Nodo;
Se si hanno quattro nodi definiti come sopra e inizializzati in modo opportuno (...), un esempio di lista può essere questo:

A -> B -> C -> D

Dove con la freccia indico che ogni nodo "sa" che nodo si trova davanti ad esso, informazione che si ottiene dal puntatore 'next'. Ecco come può essere creata in breve quella lista:

codice:
void main()
{
    Nodo A, B, C, D;
    Nodo* primoElemento = &A;

    A.number = 1;
    B.number = 2;
    C.number = 3;
    D.number = 4;

    A.next = &B; // A.next punta a B, A -> B
    B.next = &C; // B.next punta a C, B -> C
    C.next = &D; // C.next punta a D, C -> D
}
Il tutto si risolve in:

A -> B -> C -> D

Una volta ottenuta questa struttura, la si può facilmente scorrere attraverso i campi 'next'. Se in questo caso volessi il generico 3° elemento della lista:

codice:
const unsigned indiceNodo = 3;
Nodo* nodoDaCercare = primoElemento; // punta quindi ad 'A'

for( unsigned i = 1; i < indiceNodo; i++ )
    nodoDaCercare = nodoDaCercare->next;
Ed ecco che con questo breve codice avremo un puntatore 'nodoDaCercare' a 'C'.

La flessibilità di una lista sta nel fatto che può essere gestita in modo dinamico (come ha detto dany), senza il problema di riallocare tutti gli elementi. Ad es., se si volesse aggiungere un elemento alla fine:

A -> B -> C -> D -> E

Basterebbe creare un nuovo nodo 'E', scorrere tutta la lista, e far puntare 'D.next' a questo nuovo nodo creato.

N.B.: per far sì che "ci si accorga" di essere arrivati alla fine della lista, per convenzione si imposta il campo 'next' dell'ultimo elemento a NULL (sinonimo di '0', puntatore nullo), altrimenti si rischia un ciclo di scorrimento infinito!

Questo è uno dei più semplici esempi di tipo di dato astratto. Altri possono essere pile (o stack), code, alberi ecc. ecc., usati cmq a seconda delle proprie esigenze.

Spero di essere stato chiaro.

Ciao.

P.S.: non hai specificato il linguaggio nel quale intendevi avere la spiegazione, quindi l'ho scritto con quello a me più congeniale. :adhone: Se hai problemi col C fammi sapere così al limite te lo traduco in un altro linguaggio, se posso.