20 Liste – Creazione

Chiuso per ora l’argomento classi da qui e per i prossimi articoli ci occuperemo di un argomento collegato alle classi, le liste. Collegato perchè utilizzeremo differenti classi per gestire le nostre liste ma partiamo dall’inizio.

Cos’è una lista?
Una lista è un metodo per allocare memoria in maniera dinamica.
Cosa vuol dire questo? Avete presente i vettori? Prima di usarli dovete decidere le loro dimensioni conoscendo quindi in anticipo il numero di oggetti che andrete a salvare al loro interno. Se poi gli oggetti fossero di più avremmo un errore di overflow mentre se fossero di meno avremmo memoria allocata ma non utilizzata, uno spreco.
Nelle liste invece allochiamo solo lo spazio necessario per salvare i nostri dati, non di più e non di meno.

Struttura di una lista
La lista più semplice che possiamo creare è formata da una successione di nodi in cui ogni nodo contiene i dati che vogliamo salvare nella nostra lista e il puntatore al nodo successivo. Graficamente possiamo rappresentarla con il disegno successivo:
20.1

Tipologie Principali di Liste
Vediamo una iniziale classificazione di liste:
Liste semplicemente concatenate ciascun nodo punta ad un nodo successivo ed è puntato da un nodo precedente. L’ultimo nodo della lista non punterà a nessun altro nodo così come il primo non sarà puntato da nessuno. L’immagine sopra ne è un esempio.
Liste doppiamente concatenate ciascun nodo punta sia al nodo successivo a lui che al precedente tranne il primo e l’ultimo
Liste circolarmente concatenate possono essere sia semplici che doppiamente concatenate e inoltre la coda punterà alla testa (e la testa alla coda se sono doppiamente concatenate)
Nel disegno sotto possiamo vedere un’esempio di lista doppiamente concatenata (la prima) e di una lista doppiamente concatenata circolare (la seconda):
20.2

Come creare una lista
Apriamo un nuovo progetto su NetBeans e andiamo a creare due nuove classi, una la chiameremo Lista e l’altra Nodo.
Per ora immaginiamo una lista in cui vogliamo salvare soltanto dei numeri.
Lista

public class Lista {
    Nodo n;//questa variabile sarà il nodo di testa
    public Lista()
    {
        n=null;
    }
    /*creeremo successivamente i vari metodi per interagire con la
    nostra lista, cioè per inserire, eliminare o cercare dati contenuti in essa
    oppure anche per ordinarla
    */
}

Nodo

//NODO SEMPLICEMENTE CONCATENATO
public class Nodo {
    Nodo successivo;
    int numero;
}
//NODO DOPPIAMENTE CONCATENATO
public class Nodo {
    Nodo successivo;
    int numero;
    Nodo precedente;
}

private n
La variabile n non dev’essere modificata dal main o potremmo perdere la testa della nostra lista quindi per evitare di dimenticarcelo potremmo porre a private tale variabile.

private Nodo
Anche la classe Nodo potrebbe essere creata come sottoclasse privata della classe Lista dato che il main (o altre classi che usano una lista) è interessato solo ad interagire con la classe Lista.

Qui abbiamo visto come creare una lista, nei prossimi articoli creeremo i metodi all’interno della classe Lista per poter interagire con essa, non perdeteveli!

Please follow and like us: