Le liste. Le liste linkate

Размер: px
Начинать показ со страницы:

Download "Le liste. Le liste linkate"

Транскрипт

1 Le liste Le liste linkate Molto spesso bisogna gestire insiemi di oggetti dello stesso tipo. Un modo molto semplice per tenere in memoria tali insiemi consiste nel creare un array per contenerli. Nome Cognome Matricola CdL Nome Cognome Matricola CdL 1

2 Le liste linkate Gli array presentano però alcuni svantaggi: La dimensione deve essere prefissata L occupazione effettiva di memoria non coincide con la necessità del processo in fase di esecuzione Non è possibile allungare un array Non è possibile inserire elementi nuovi nel mezzo dell array. Occorre spostare in avanti tutti gli elementi a destra della posizione di inserimento, operazione non semplice. Desiderata: Gli elementi organizzati in un unica struttura La dimensione dell insieme deve adattarsi alle reali necessità del processo in esecuzione L insieme deve potersi mantenere ordinato L inserimento in mezzo deve essere possibile ed agevole Le liste linkate Lista linkata: Info Link Info Link Info Link Ogni elemento della lista contiene un riferimento all elemento successivo Serve un identificatore esterno per tenere traccia della lista 2

3 Le liste linkate - implementazione public class Lista private Nodo ; public Lista() = null; Info Link Info Link Info Link Info Le liste linkate - implementazione public class Nodo private int info; private Nodo next; public Nodo(int val) info = val; next = null; public Nodo(int val, Nodo n) info = val; next = n; public void setinfo(int val) info = val; public int getinfo() return info; public void setnext(nodo n) next = n; public Nodo getnext() return next; info Nodo next 3

4 Le liste linkate - implementazione Creazione di un nuovo elemento: Nodo elem = new Nodo(10); elem Info 10 Link elem n Creazione di un secondo elemento: Info Link Info Link elem.setnext(new Nodo(13)); Le liste linkate - implementazione Creazione di un terzo elemento: (elem.getnext()).setnext(new Nodo(45)); elem Info Link Info Link elem.getnext() elem n Info Link Info Link Info Link

5 Le liste linkate - implementazione 1) Nodo = new Nodo(13); 2) Nodo = ; 1) 13 2) 13 Le liste linkate - implementazione 3).setNext(new Nodo()); 4) =.getnext(); 3) n 4) 5

6 Le liste linkate - implementazione 5).setNext(new Nodo(18)); 5) n 18 Risultato finale: 18 Le liste linkate inserimento di un nuovo elemento 3 possibilità di inserimento: in testa 18 in coda 6

7 Le liste linkate inserimento di un nuovo elemento 3 possibilità di inserimento: ordinato Le liste linkate inserimento di un nuovo elemento Inserimento in testa: 1. istanziare un nuovo elemento; 2. collegare la lista già esistente al nuovo nodo; 3. modificare il riferimento alla testa; 18 istanziamo un nuovo elemento Nodo = new Nodo(18, ); 7

8 Le liste linkate inserimento di un nuovo elemento Inserimento in testa: 1. istanziare un nuovo elemento; 2. collegare la lista già esistente al nuovo nodo; 3. modificare il riferimento alla testa; 18 colleghiamo la lista già esistente al nuovo nodo Nodo = new Nodo(18, ); Le liste linkate inserimento di un nuovo elemento Inserimento in testa: 1. istanziare un nuovo elemento; 2. collegare la lista già esistente al nuovo nodo; 3. modificare il riferimento alla testa; 18 modificare il riferimento alla testa = ; 8

9 Le liste linkate inserimento di un nuovo elemento public class Lista private Nodo ; public Lista() = null; public void inserthead(int val) Nodo = new Nodo(val,); = ; public class Lista private Nodo ; public Lista() = null; public void inserthead(int val) = new Nodo(val,); Le liste linkate inserimento di un nuovo elemento Inserimento in coda: 1. scorrere la lista fino all ultimo elemento; 2. istanziare un nuovo elemento; 3. collegare l ultimo elemento trovato con il nuovo elemento appena creato; scorriamo la lista fino all ultimo elemento Nodo = ; for( ;.getnext()!= null; =.getnext()); Attenzione! 9

10 Le liste linkate inserimento di un nuovo elemento Inserimento in coda: 1. scorrere la lista fino all ultimo elemento; 2. istanziare un nuovo elemento; 3. collegare l ultimo elemento trovato con il nuovo elemento appena creato; scorriamo la lista fino all ultimo elemento Nodo = ; for( ;.getnext()!= null; =.getnext()); Attenzione! Le liste linkate inserimento di un nuovo elemento Inserimento in coda: 1. scorrere la lista fino all ultimo elemento; 2. istanziare un nuovo elemento; 3. collegare l ultimo elemento trovato con il nuovo elemento appena creato; n 18 istanziamo un nuovo elemento.setnext(new Nodo(18)); 10

11 Le liste linkate inserimento di un nuovo elemento Inserimento in coda: 1. scorrere la lista fino all ultimo elemento; 2. istanziare un nuovo elemento; 3. collegare l ultimo elemento trovato con il nuovo elemento appena creato; n 18 colleghiamo l ultimo elemento trovato con il nuovo elemento appena creato.setnext(new Nodo(18)); Le liste linkate inserimento di un nuovo elemento Inserimento in coda: ATTENZIONE!!! Quando inseriamo in coda è necessario prima verificare se la lista è vuota! se == null la lista è vuota se!= null la lista non è vuota Occorre implementare un metodo membro della classe Lista che esegua questo controllo! public class Lista private Nodo ; public Lista() = null; public boolean isempty() return ( == null? true : false); 11

12 Le liste linkate inserimento di un nuovo elemento public class Lista private Nodo ; public Lista() = null; public void inserttail(int val) if (isempty()) = new Nodo(val); else Nodo = ; for( ;.getnext()!= null; =.getnext());.setnext(new Nodo(val)); Le liste linkate inserimento di un nuovo elemento Inserimento ordinato: 1. scorrere la lista confrontando gli elementi presenti con quello da inserire, arrestandosi quando si trova un elemento maggiore (o minore); 2. collegare la parte con gli elementi minori al nuovo elemento; 3. collegare la parte con gli elementi maggiori; scorriamo la lista fino al punto di inserimento Nodo = ; for( ; (.getnext()!= null) && (.getnext()).getinfo() < val); =.getnext()); Attenzione! 12

13 Le liste linkate inserimento di un nuovo elemento Inserimento ordinato: 1. scorrere la lista confrontando gli elementi presenti con quello da inserire, arrestandosi quando si trova un elemento maggiore (o minore); 2. collegare la parte con gli elementi minori al nuovo elemento; 3. collegare la parte con gli elementi maggiori; scorriamo la lista fino al punto di inserimento Nodo = ; for( ; (.getnext()!= null) && (.getnext()).getinfo() < val); =.getnext()); Attenzione! Le liste linkate inserimento di un nuovo elemento Inserimento ordinato: 1. scorrere la lista confrontando gli elementi presenti con quello da inserire, arrestandosi quando si trova un elemento maggiore (o minore); 2. collegare la parte con gli elementi maggiori al nuovo elemento; n 3. collegare la parte con gli elementi minori; collegare la parte con gli elementi maggiori al nuovo elemento.setnext(new Nodo(val,.getNext())); 13

14 Le liste linkate inserimento di un nuovo elemento Inserimento ordinato: 1. scorrere la lista confrontando gli elementi presenti con quello da inserire, arrestandosi quando si trova un elemento maggiore (o minore); 2. collegare la parte con gli elementi maggiori al nuovo elemento; n 3. collegare la parte con gli elementi minori; collegare la parte con gli elementi minori al nuovo elemento.setnext(new Nodo(val,.getNext())); Le liste linkate inserimento di un nuovo elemento Inserimento ordinato: ATTENZIONE!!! Quando inseriamo in coda è necessario prima verificare se la lista è vuota e, in subordine, controllare se il primo elemento della lista verifica già la condizione! public class Lista private Nodo ; public Lista() = null; public void insertordered(int val) if (isempty()) = new Nodo(val); else if(.getinfo() > val) = new Nodo(val, ); else Nodo = ; for( ; (.getnext()!= null) && ((.getnext()).getinfo() < val); =.getnext());.setnext(new Nodo(val,.getNext())); 14

15 Le liste linkate inserimento di un nuovo elemento 1. Lista ordinata: public class Lista private Nodo ; public Lista() = null; public Nodo searchord(int key) //CORPO DEL METODO Le liste linkate ricerca di un elemento 1. Lista ordinata: public class Lista private Nodo ; public Lista() = null; public Nodo searchord(int key) Nodo = ; for( ;!=null &&.getinfo() < key; =.getnext()); if(!=null &&.getinfo() == key) return ; return null; 15

16 Le liste linkate ricerca di un elemento 2. Lista non ordinata: public class Lista private Nodo ; public Lista() = null; public Nodo search(int key) //CORPO DEL METODO Le liste linkate ricerca di un elemento 2. Lista non ordinata: public class Lista private Nodo ; public Lista() = null; public Nodo search(int key) Nodo = ; for( ;!=null &&.getinfo()!= key; =.getnext()); return ; //ATTENZIONE!!!

17 Le liste linkate cancellazione di un elemento 1. cancellazione del primo elemento con restituzione del valore info: Le liste linkate cancellazione di un elemento 1. cancellazione del primo elemento con restituzione del valore info: public int deletehead() //CORPO DEL METODO 17

18 Le liste linkate cancellazione di un elemento 1. cancellazione del primo elemento con restituzione del valore info: public class Lista private Nodo ; public Lista() = null; public int deletehead() if (isempty()) System.out.println( Lista vuota ); return 0; else Nodo = ; =.getnext(); return.getinfo(); Le liste linkate cancellazione di un elemento 1. cancellazione dell ultimo elemento con restituzione del valore info: prev 18

19 Le liste linkate cancellazione di un elemento 1. cancellazione dell ultimo elemento con restituzione del valore info: prev Le liste linkate cancellazione di un elemento 1. cancellazione dell ultimo elemento con restituzione del valore info: prev public int deletetail() //CORPO DEL METODO 19

20 Le liste linkate cancellazione di un elemento 1. cancellazione dell ultimo elemento con restituzione del valore info: public class Lista private Nodo ; public Lista() = null; public int deletetail() if (isempty()) System.out.println( Lista vuota ); return 0; else Nodo = ; Nodo prev = null; for( ;.getnext()!= null; prev =, =.getnext()); if(prev == null) =null; //A CHE SERVE QUESTA ISTRUZIONE? else prev.setnext(null); return.getinfo(); Le liste linkate cancellazione di un elemento 1. cancellazione di un elemento qualsiasi con restituzione del Nodo: prev 20

21 Le liste linkate cancellazione di un elemento 1. cancellazione dell ultimo elemento con restituzione del valore info: prev public Nodo deletekey(int key) //CORPO DEL METODO Le liste linkate cancellazione di un elemento 1. cancellazione di un elemento qualsiasi con restituzione del Nodo: public class Lista private Nodo ; public Lista() = null; public Nodo deletekey(int key) //ABBIAMO UN PARAMETRO! if (isempty()) System.out.println( Lista vuota ); return null; else Nodo = ; Nodo prev = null; for( ;.getnext()!= null &&.getinfo()!= key; prev =, =.getnext()); if(!= null) if(prev == null) //NON E INUTILE QUESTO CONTROLLO? =.getnext(); else prev.setnext(.getnext()); return ; 21

22 Le liste linkate esercizi a) Aggiungere alla classe Lista un metodo gethead() che restituisca un riferimento alla testa della lista; b) Aggiungere alla classe Lista un metodo printlist() che stampi a video tutti gli elementi della lista; 1. Concatenare una lista linkata ad un'altra lista linkata. 2. Fondere due liste linkate ed ordinate di interi in una lista linkata ordinata. 3. Invertire una lista linkata. 4. Invertire una lista linkata con una procedura ricorsiva. Le liste linkate esercizi Metodo gethead() : public Nodo gethead() return ; Metodo printlist() : public void printlist() Nodo = ; for(;!=null; =.getnext()) System.out.println(.getInfo()); 22

23 Le liste linkate esercizi Una possibile soluzione per l esercizio 1: public class Esercizio1 public static void concatlists(lista l1, Lista l2) if (l2.isempty()) return; Nodo pl2=l2.gethead(); for(; pl2!=null; pl2=pl2.getnext()) l1.inserttail(pl2.getinfo()); public static void main(string[] args) Lista l1 = new Lista(); Lista l2 = new Lista(); for(int i = 1; i<=10; i++ ) l1.inserttail(i); for(int i = 11; i<=20; i++ ) l2.inserttail(i); concatlists(l1,l2); l1.printlist(); Le liste linkate esercizi Una possibile soluzione per l esercizio 2: public static Lista mergelist(lista l1, Lista l2) Lista l3 = new Lista(); Nodo p1 = l1.gethead(); Nodo p2 = l2.gethead(); while(p1!= null && p2!= null) if(p1.getinfo() <= p2.getinfo()) //l'elemento corrente di l1 è <= a quello di l2 l3.inserttail(p1.getinfo()); p1 = p1.getnext(); else //l'elemento corrente di l1 è > a quello di l2 l3.inserttail(p2.getinfo()); p2 = p2.getnext(); //End while CONTINUA 23

24 Le liste linkate esercizi Una possibile soluzione per l esercizio 2: RIPRENDE //Attacchiamo l'eventuale coda della lista piu' lunga while(p1!= null) // l1 e' la lista piu' lunga l3.inserttail(p1.getinfo()); p1 = p1.getnext(); while(p2!= null) // l2 e' la lista piu' lunga l3.inserttail(p2.getinfo()); p2 = p2.getnext(); return l3; Le liste linkate esercizi Una possibile soluzione per l esercizio 2: public class Esercizio2 public static Lista mergelist(lista l1, Lista l2) //Corpo della funzione public static void main(string[] args) int[] vl1 = 2,2,9,11,23; int[] vl2 = 8,10,34; Lista l1 = new Lista(); Lista l2 = new Lista(); Lista l3 = new Lista(); for(int i = 0; i < vl1.length; i++ ) l1.insertordered(vl1[i]); for(int i = 0; i < vl2.length; i++ ) l2.insertordered(vl2[i]); l1.printlist( ); System.out.println(); l2.printlist( ); System.out.println(); l3 = mergelist(l1,l2); l3.printlist(); 24

25 Le liste linkate esercizi Una possibile soluzione per l esercizio 3: public class Esercizio3 public static Lista reverse(lista l) Lista l = new Lista(); Nodo = l.gethead(); while(!= null) l.inserthead(.getinfo()); =.getnext(); return l; public static void main(string[] args) Lista lx = new Lista(); for(int i = 1; i<=10; i++ ) lx.inserttail(i); lx.printlist(); //Stampiamo la lista prima dell'inversione System.out.println(); lx = reverse(lx); lx.printlist(); Le liste linkate esercizi Una possibile soluzione per l esercizio 4: 1. Come possiamo pensare questo metodo in termini ricorsivi? return(l) se (L = Ø) reverse(l) = reverse(l ) + metti primo(l) in coda alla lista risultante se (L Ø) Dove L = L primo(l) 25

26 Le liste linkate esercizi L L L L 4 3 L L Le liste linkate esercizi L 3 L L L 3 26

27 Le liste linkate esercizi L 3 4 L L Le liste linkate esercizi Una possibile soluzione per l esercizio 4: public class Esercizio4 public static Lista reverser(lista l) if (! l.isempty()) int n = l.deletehead(); reverser(l).inserttail(n); return l; public static void main(string[] args) Lista lx = new Lista(); for(int i = 1; i<=10; i++ ) lx.inserttail(i); lx.printlist(); //Stampiamo la lista prima dell'inversione System.out.println(); lx = reverser(lx); lx.printlist(); 27

Inserimento in una lista ordinata

Inserimento in una lista ordinata Inserimento in una lista ordinata Vogliamo inserire un nuovo elemento in una lista in cui gli elementi sono memorizzati in ordine crescente: Passo 1: creare un nuovo nodo della lista Passo 2: trovare il

Подробнее

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 21 Strutture dinamiche Gli array ci permettono di memorizzare un insieme di dati dello stesso tipo Deve essere noto staticamente il

Подробнее

Programmazione 1 A.A. 2015/2016

Programmazione 1 A.A. 2015/2016 Cognome e Nome Matricola Programmazione 1 A.A. 2015/2016 Appello del 16 Dicembre 2015 Compito n 1 Prima parte Esercizio 1 (10 punti) Cosa stampa il seguente frammento di codice Java? int[] A = {3, 8, 91,

Подробнее

Laboratorio di Informatica

Laboratorio di Informatica Liste semplici (semplicemente linkate) Una lista semplice e costituita da nodi Laboratorio di Informatica 7. Strutture complesse di dati in C++ Ogni nodo e una struttura che contiene : Dati Un riferimento

Подробнее

Strutture dati dinamiche

Strutture dati dinamiche Strutture dati dinamiche - Liste concatenate - Pile -> LIFO (last in first out) - Code -> FIFO (first in first out) - Alberi binari: gestione dati in algoritmi complessi Liste Concatenate Formata da elementi

Подробнее

E17 Esercizi sugli Array in Java

E17 Esercizi sugli Array in Java E17 Esercizi sugli Array in Java Esercizio 1 (esercizio 9.1 del libro di testo). Implementare un metodo statico di nome stringacorta che prende come parametro un array di oggetti String e che restituisce

Подробнее

Esercizio laboratorio (Java 0) Raccolto stampato nel turno successivo di laboratorio

Esercizio laboratorio (Java 0) Raccolto stampato nel turno successivo di laboratorio Esercizio laboratorio (Java 0) Presentato oggi: lista semplice (senza er) Raccolto stampato nel turno successivo di laboratorio Dovrà essere indicato: cognome e nome matricola turno laboratorio tempo impiegato

Подробнее

La struttura dati CODA

La struttura dati CODA Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati CODA Pietro Di Lena - [email protected] Introduzione Una coda (o queue) è una struttura dati astratta

Подробнее

Rappresentazione di liste mediante puntatori in linguaggio C

Rappresentazione di liste mediante puntatori in linguaggio C Rappresentazione di liste mediante puntatori in linguaggio C Specifica del tipo degli elementi typedef... TipoElemLista; struct StructLista TipoElemLista key; struct StructLista *next; ; typedef struct

Подробнее

Strutture Dinamiche. Fondamenti di Informatica

Strutture Dinamiche. Fondamenti di Informatica Strutture Dinamiche Fondamenti di Informatica 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione Companies, srl 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato));

Подробнее

3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso;

3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso; Un esempio di definizione di classe con array di oggetti Sia data la classe StudUniv per gli studenti universitari (definita in una lezione precedente). Scrivere una nuova classe Corso, dove ciascun corso

Подробнее

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false; Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i

Подробнее

Informatica 3. LEZIONE 12: Liste. Modulo 1: ADT lista e implementazione basata su array Modulo 2: Lista concatenata

Informatica 3. LEZIONE 12: Liste. Modulo 1: ADT lista e implementazione basata su array Modulo 2: Lista concatenata Informatica 3 LEZIONE 12: Liste Modulo 1: ADT lista e implementazione basata su array Modulo 2: Lista concatenata Informatica 3 Lezione 12 - Modulo 1 ADT lista e implementazione basata su array Introduzione

Подробнее

Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione

Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione Alberi Strutture dati: Alberi Strutture gerarchiche di dati Esempi Il file system di un sistema operativo L organigramma di un azienda Alberi generali, alberi n-ari, alberi binari, Ogni nodo ha un unico

Подробнее

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste 4 Le liste collegate 4.0 Le liste collegate c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 4.0 0 4 Le liste collegate Rappresentazione di liste 4.1

Подробнее

Strutture dati dinamiche in C (II)

Strutture dati dinamiche in C (II) Strutture dati dinamiche in C (II) Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi [email protected] Sommario Le liste concatenate (ancora ma in modo più formale) L

Подробнее

Liste con sentinella. intlist *createlist(void){ intlist *q = malloc(sizeof(intlist)); if(!q) { exit(-1); } q->next = q->prev = q; return q; }

Liste con sentinella. intlist *createlist(void){ intlist *q = malloc(sizeof(intlist)); if(!q) { exit(-1); } q->next = q->prev = q; return q; } Liste con sentinella Un ulteriore semplificazione delle operazioni sulle liste si ottiene utilizzando un elemento sentinella (dummy) che non contiene informazione, ma serve a segnalare la fine e l inizio

Подробнее

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Подробнее

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 6 - Liste Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento

Подробнее

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Подробнее

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione e rimane immutato.

Подробнее

Struct e liste concatenate

Struct e liste concatenate Struct e liste concatenate Alessio Orlandi 20 aprile 2010 Tipi complessi Tipi scalari: int, float,... : singolo elemento Contenitori per collezioni di oggetti: array. Quindi: array di interi, array di

Подробнее

Esercizi su array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E08. C. Limongelli Gennaio 2012

Esercizi su array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E08. C. Limongelli Gennaio 2012 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E08 Esercizi su Array C. Limongelli Gennaio 2012 1 Contenuti q Esercizi: Lettura e stampa di un array Massimo elemento di un array

Подробнее

Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un

Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un giocatore, ogni giocatore una scheda Ci vengono già fornite le classi necessarie

Подробнее

Esercizio: Lista Circolare

Esercizio: Lista Circolare Esercizio: Lista Circolare Si realizzi in Java un gestore di una lista circolare. La dimensione minima della lista è 2 elementi (ed è anche la dimensione iniziale). La dimensione massima è 20 elementi.

Подробнее

Hash Table. Hash Table

Hash Table. Hash Table Hash Table La ricerca di un elemento su una lista (semplice o doppia) presenta una complessità di tipo O(n), dato che occorre scandire (al più) l intera lista per poter trovare l elemento desiderato. Le

Подробнее