Algoritmi e strutture dati

Realizzazione di liste con puntatori

L’ idea di base è quella di memorizzare una lista di n elementi in n record, usualmente detti celle, tali che l’ i-esima cella contenga il valore dell’ i-esimo elemento della lista e l’ indirizzo (puntatore) della cella contente l’ elemento successivo (realizzazione monodirezionale) o gli indirizzi sia della cella successiva che precedente (realizzazione bidirezionale).

La prima cella è indirizzata da una variabile L di tipo puntatore, mentre l ‘ultima cella contiene il valore convenzionale NIL come indirizzo della cella successiva. Ovviamente nel caso bidirezionale la prima cella contiene NIL come indirizzo della cella precedente. Entrambe le realizzazioni possono essere rese circolari, facendo si che l’ultima cella contenga l’ indirizzo della prima, e nel caso bidirezionale, che la prima cella contenga l’ indirizzo dell’ ultima.

Per rendere più leggibile il codice che andrà ad implementare la lista può essere utile introdurre una cella in più detta sentinella, che è direttamente indirizzata da L, ma non contiene i valore di alcun elemento.

Ovviamente tutte queste proprietà possono essere combinate, ottenendo liste più o meno complicate; vediamo per esempio una lista bidirezionale circolare con sentinella:

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.