Liste concatenate. Collezione ordinata di nodi. Carlo Paolo Simona. Anna. ciascun nodo contiene due riferimenti:
|
|
- Giorgina Di Giacomo
- 6 anni fa
- Visualizzazioni
Transcript
1 Liste concatenate Collezione ordinata di nodi head tail next next next next element element element element Ø Anna Carlo Paolo Simona ciascun nodo contiene due riferimenti: - un riferimento "element" a un elemento - un riferimento "next" ad un altro nodo
2 Liste concatenate Lista concatenata Ø array N-1 somiglianze: ordinamento lineare differenze: la lista concatenata non ha bisogno di una taglia fissata a priori come accade per l'array (può usare uno spazio propozionale al numero dei suoi elementi)
3 La classe Nodo Implementazione Java public class Node<E> { private E element; private Node<E> next; public Node(E e, Node<E> n){ element = e; next = n; } public Node(){ this(null,null); } public E getelement(){ return element; } public Node<E> getnext(){ return next; } public void setelement(e newelem) { element = newelem; } public void setnext(node<e> newnext){ next = newnext; } } next element
4 Liste concatenate Implementazione della pila con liste concatenate l elemento in cima alla pila è memorizzato nel primo nodo della lista head (cima della pila) Ø y a x v
5 Liste concatenate Implementazione della pila con liste concatenate l elemento in cima alla pila è memorizzato nel primo nodo della lista head (cima della pila) Ø y a x v inserimento di un nuovo elemento e nella pila (push(e))
6 Liste concatenate Implementazione della pila con liste concatenate l elemento in cima alla pila è memorizzato nel primo nodo della lista head (cima della pila) Ø y a x v inserimento di un nuovo elemento e nella pila (push(e)) - creiamo un nuovo nodo
7 Liste concatenate Implementazione della pila con liste concatenate l elemento in cima alla pila è memorizzato nel primo nodo della lista head (cima della pila) Ø e y a x v inserimento di un nuovo elemento e nella pila (push(e)) - creiamo un nuovo nodo - definiamo il riferimento all'elemento e
8 Liste concatenate Implementazione della pila con liste concatenate l elemento in cima alla pila è memorizzato nel primo nodo della lista head (cima della pila) Ø e y a x v inserimento di un nuovo elemento e nella pila (push(e)) - creiamo un nuovo nodo - definiamo il riferimento all'elemento e - definiamo il riferimento al nodo successivo
9 Liste concatenate Implementazione della pila con liste concatenate l elemento in cima alla pila è memorizzato nel primo nodo della lista head (cima della pila) Ø e y a x v inserimento di un nuovo elemento e nella pila (push(e)) - creiamo un nuovo nodo - definiamo il riferimento all'elemento e - definiamo il riferimento al nodo successivo - aggiorniamo il riferimento al nodo cima della pila
10 Liste concatenate Implementazione della pila con liste concatenate package stack; import linkedlist.node;//linkedlist e` il pacchetto dove abbiamo inserito la classe Node<E> public class NodeStack<E> implements Stack<E>{ protected Node<E> top; protected int size; public NodeStack(){ top = null; size = 0; } public int size() { return size; } public boolean isempty() { return (size == 0); }... }
11 Liste concatenate Implementazione della pila con liste concatenate public class NodeStack<E> implements Stack<E>{... public E top() throws EmptyStackException { if (isempty()) throw new EmptyStackException("Lo stack e` vuoto."); return top.getelement(); } public void push(e element) { Node<E> v = new Node<E>(element,top); top = v; size++; }... } public E pop() throws EmptyStackException { if (isempty()) throw new EmptyStackException("Lo stack e` vuoto."); E temp = top.getelement(); top = top.getnext(); size--; return temp; }
12 Liste concatenate Implementazione della coda con liste concatenate head (front della coda) tail (rear della coda) Ø e y a x v il front della coda è memorizzato nel primo nodo (head) della lista il rear della coda è memorizzato nell ultimo nodo (tail) della lista
13 Liste concatenate Implementazione della pila e della coda Vantaggi: - non si deve specificare a priori un limite superiore alla taglia della pila o della coda (una pila o una coda di n elementi richiederà sempre uno spazio di dimensione O(n)) - tutte le operazioni richiedono tempo O(1) Svantaggi: - l'implementazione è leggermente meno semplice di quella con array - lo spazio di memoria richiesto da ciascun elemento è un po' maggiore rispetto alla soluzione con array
14 La struttura dati Coda Doppia (Deque) E` un'estensione della struttura dati Coda - cancellazioni e inserimenti sono possibili da entrambe le estremità (front e rear) in in out out
15 Il tipo astratto di dati deque Tipo di dati e operazioni Dati: oggetti arbitrari Operazioni: - void addfirst(e e): inserisce un nuovo elemento e all'inizio di D - void addlast(e e): inserisce un nuovo elemento e alla fine di D - EremoveFirst(): restituisce e rimuove il primo elemento di D - E removelast(): restituisce e rimuove l'ultimo elemento di D - E getfirst(): restituisce il primo elemento di D - E getlast(): restituisce l'ultimo elemento di D - Integer size(): restituisce il numero di elementi di D - Boolean isempty(): è vero se D è vuota, falso altrimenti
16 Il tipo astratto di dati deque Le eccezioni Si verifica una EmptyDequeException quando si invoca uno dei seguenti metodi su una deque vuota. - E removefirst() - E removelast() - E getfirst() - E getlast()
17 Implementazione deque L'interfaccia public interface Deque<E> { public int size(); public boolean isempty(); public E getfirst() throws EmptyDequeException; public E getlast() throws EmptyDequeException; public void addfirst (E element); public void addlast (E element); public E removefirst() throws EmptyDequeException; } public E removelast() throws EmptyDequeException;
18 Implementazione deque Soluzione con liste concatenate head tail Ø
19 Implementazione deque Soluzione con liste concatenate head tail Ø come facciamo una removelast()?
20 Implementazione deque Soluzione con liste concatenate head tail Ø come facciamo una removelast()?
21 Implementazione deque Soluzione con liste concatenate head tail Ø come facciamo una removelast()?
22 Implementazione deque Soluzione con liste concatenate head tail Ø come facciamo una removelast()?
23 Implementazione deque Soluzione con liste concatenate head tail Ø come facciamo una removelast()?
24 Implementazione deque Soluzione con liste concatenate head tail Ø questa soluzione è inefficiente perché removelast() richiederebbe tempo O(n), dove n è il numero di elementi nella deque tempo necessario per aggiornare il riferimento next dell'ultimo nodo e il riferimento al nodo tail
25 Implementazione deque Soluzione con liste concatenate header trailer prev next Ciascun nodo contiene un riferimento (next) al nodo successivo e un riferimento (prev) al nodo precedente; Per semplificare la programmazione si usano due nodi speciali detti nodi sentinella: nodo header - next contiene un riferimento al primo nodo della deque - prev contiene null nodo trailer - prev contiene un riferimento all'ultimo nodo della deque - next contiene null
26 Implementazione deque Soluzione con liste concatenate Inserimento in testa di un nuovo elemento header trailer Sempronio Caio Tizio
27 Implementazione deque Soluzione con liste concatenate Inserimento in testa di un nuovo elemento header trailer Sempronio Caio Tizio
28 Implementazione deque Soluzione con liste concatenate Inserimento in testa di un nuovo elemento header trailer Sempronio Caio Tizio
29 Liste doppiamente concatenate La classe DLNode public class DLNode<E> { prev next private E element; private DLNode<E> next, prev; element public DLNode() { this(null, null, null); } public DLNode(E e, DLNode<E> p, DLNode<E> n) { element = e; next = n; prev = p; } } public void setelement(e newelem) { element = newelem; } public void setnext(dlnode<e> newnext) { next = newnext; } public void setprev(dlnode<e> newprev) { prev = newprev; } public E getelement() { return element; } public DLNode<E> getnext() { return next; } public DLNode<E> getprev() { return prev; }
30 La struttura dati array list E` un contenitore di elementi organizzati secondo un ordinamento lineare: primo elemento, secondo elemento,...
31 La struttura dati array list E` un contenitore di elementi organizzati secondo un ordinamento lineare: primo elemento, secondo elemento,... cancellazioni e inserimenti sono possibili in posti arbitrari
32 La struttura dati array list E` un contenitore di elementi organizzati secondo un ordinamento lineare: primo elemento, secondo elemento,... inserimento di un nuovo oggetto cancellazioni e inserimenti sono possibili in posti arbitrari
33 La struttura dati array list E` un contenitore di elementi organizzati secondo un ordinamento lineare: primo elemento, secondo elemento,... cancellazione di un oggetto cancellazioni e inserimenti sono possibili in posti arbitrari
34 La struttura dati array list E` un contenitore di elementi organizzati secondo un ordinamento lineare: primo elemento, secondo elemento,... cancellazione di un oggetto cancellazioni e inserimenti sono possibili in posti arbitrari
35 La struttura dati array list L'accesso agli elementi avviene per mezzo del loro indice Dato un array list S di n elementi, possiamo riferirci univocamente a ciascun elemento di S attraverso il suo indice: l'ndice di un elemento e in S è il numero di elementi che precedono e in S elemento di indice 0 L'indice di un elemento e rappresenta la posizione di e all'interno dell' ordinamento lineare della struttura: S l'elemento i-esimo ha indice i - 1 elemento di indice 3
36 La struttura dati array list Naturalmente: l'indice di un elemento e si può modificare in seguito a inserimenti e cancellazioni elemento di indice 0 Prima S elemento di indice 3
37 La struttura dati array list Naturalmente: l'indice di un elemento e si può modificare in seguito a inserimenti e cancellazioni Inserimento S
38 La struttura dati array list Naturalmente: l'indice di un elemento e si può modificare in seguito a inserimenti e cancellazioni elemento di indice 1 Dopo S elemento di indice 4
39 Il tipo astratto di dati array list Tipo di dati e operazioni Dati: oggetti arbitrari Operazioni: - get(i): restituisce l'elemento di indice i - set(i, e): restituisce e rimpiazza l'elemento di indice i con l elemento e - add(i, e): inserisce un nuovo elemento e di indice i - remove(i): restituisce e rimuove l'elemento di indice i - size() - isempty()
40 Il tipo astratto di dati array list Le eccezioni Dato un array list S di n elementi, si verifica una eccezione nei seguenti casi: get(i) con i < 0 oppure i > n - 1 set(i, e) con i < 0 oppure i > n - 1 remove(i) con i < 0 oppure i > n 1 add(i, e) con i < 0 oppure i > n S i n - 1
41 Implementazione array list L'interfaccia public interface IndexList<E> { } public int size(); public boolean isempty(); public void add(int i, E e) throws IndexOutOfBoundsException; public E get(int i) throws IndexOutOfBoundsException; public E remove(int i) throws IndexOutOfBoundsException; public E set(int i, E e) throws IndexOutOfBoundsException;
42 Implementazione array list Una semplice soluzione basata su array L'array list viene implementato con un array A di N elementi e una variabile n < N che indica il numero di elementi nell'array list A[i] mantiene un riferimento all'elemento di indice i i n - 1 N-1
43 Implementazione array list Una semplice soluzione basata su array L'array list viene implementato con un array A di N elementi e una variabile n < N che indica il numero di elementi nell'array list A[i] mantiene un riferimento all'elemento di indice i i n - 1 N-1 Algorithm get(i): if i < 0 or i > n-1 then throw BoundaryViolationException return A[i]
44 Implementazione array list Una semplice soluzione basata su array L'array list viene implementato con un array A di N elementi e una variabile n < N che indica il numero di elementi nell'array list A[i] mantiene un riferimento all'elemento di indice i e i n - 1 N-1 Algorithm remove(i): if i < 0 or i > n-1 then throw BoundaryViolationException e A[i] for j = i, i+1,..., n - 2 do A[j] A[j+1] n n - 1 return e
45 Implementazione array list Una semplice soluzione basata su array L'array list viene implementato con un array A di N elementi e una variabile n < N che indica il numero di elementi nell'array list A[i] mantiene un riferimento all'elemento di indice i i n - 1 N-1 Algorithm remove(i): if i < 0 or i > n-1 then throw BoundaryViolationException e A[i] for j = i, i+1,..., n - 2 do A[j] A[j+1] n n - 1 return e tempo di esecuzione: Θ (n) nel caso pessimo (quando i=0)
46 Implementazione array list Una semplice soluzione basata su array L'array list viene implementato con un array A di N elementi e una variabile n < N che indica il numero di elementi nell'array list A[i] mantiene un riferimento all'elemento di indice i i n - 1 N-1 Algorithm add(i, e): if i < 0 or i > n then throw BoundaryViolationException for j = n - 1, n - 2,..., i do A[i] e n n+1 A[j+1] A[j] // fa spazio al nuovo elemento
47 Implementazione array list Una semplice soluzione basata su array L'array list viene implementato con un array A di N elementi e una variabile n < N che indica il numero di elementi nell'array list A[i] mantiene un riferimento all'elemento di indice i e i n - 1 N-1 Algorithm add(i, e): if i < 0 or i > n then throw BoundaryViolationException for j = n - 1, n - 2,..., i do A[i] e n n+1 A[j+1] A[j] // fa spazio al nuovo elemento tempo di esecuzione: Θ (n) nel caso pessimo (quando i=0)
Implementazione della coda con liste concatenate. x v. il front della coda è memorizzato nel primo nodo (head) della lista
Liste concatenate Implementazione della coda con liste concatenate head (front della coda) tail (rear della coda) Ø e y a x v il front della coda è memorizzato nel primo nodo (head) della lista il rear
DettagliSTRUTTURE DATI: OLTRE GLI ARRAY LISTE
STRUTTURE DATI: OLTRE GLI ARRAY le strutture dati progettate per ospitare una collezione di elementi, sono variazioni di array Ma l'array ha dimensione fissa anche in Java determinata a priori, in linguaggi
DettagliIl tipo astratto di dati Node List
Il tipo astratto di dati Node List Tipo di dati e operazioni Tipi di dati: oggetti arbitrari (come al solito) Operazioni: Metodi generici: - integer size() - boolean isempty() Metodi di accesso: - Position
DettagliArgomenti della lezione. Tipo di dato astratto. Array. Tipo di dato Lista. Liste Implementazione di liste in Java Stack Code
Argomenti della lezione! Tipi di dato astratti! Strutture dati elementari Liste Implementazione di liste in Java Stack Code! Esempi di applicazione Tipo di dato astratto! Tipo di dato astratto o ADT (Abstract
DettagliADT Dizionario. Come nella Mappa: Diversamente dalla Mappa:
Come nella Mappa: un Dizionario è un contenitore di elementi del tipo (k,v) dove k è la chiave e v è il suo corrispondente valore. ogni elemento (k,v) viene detto entrata (entry) del Dizionario. chiavi
DettagliImplementazione Java di un ADT
Implementazione Java di un ADT Primo passo definire l'interfaccia (API) dell' ADT (l'api descrive i nomi dei metodi che l'adt supporta e come essi sono dichiarati e usati) Secondo passo scrivere il codice
DettagliMetodi di una Collection
Java Collections Introduzione Una java collection (a volte chiamata anche container) è un oggetto che raggruppa più elementi dello stesso tipo in una singola unità. Tipicamente è utilizzata per raggruppare
DettagliLa struttura dati CODA
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati CODA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una coda (o queue) è una struttura dati astratta
DettagliADT Mappa. Le chiavi (il mezzo per accedere agli elementi) hanno lo scopo di rendere efficiente la ricerca. Strutture Dati
ADT Mappa Una mappa è un contenitore di elementi del tipo (k,v) dove k è la chiave e v è il suo corrispondente valore ogni elemento (k,v) viene detto entrata (entry) della mappa entrate multiple con la
DettagliInformatica 3. Informatica 3. LEZIONE 13: Liste doppie, pile e code. Lezione 13 - Modulo 1. Free list (2) Free list. Free list
LEZIONE 13: Liste doppie, pile e code Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Lezione 13 - Modulo 1 Free list Politecnico di Milano - Prof. Sara Comai 1 Politecnico di
DettagliStrutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05
Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica
DettagliCorso: Fondamenti di Informatica (Canale 5) a.a Corsi di laurea: Ing. Settore Informazione
Domanda n. 1 Corso: Fondamenti di Informatica (Canale 5) a.a. 2016-17 Corsi di laurea: Ing. Settore Informazione Questionario a Risposte Multiple per auto-valutazione del Lab10 Argomento: Algoritmi e complessita'
DettagliLe collezioni di oggetti. Prof. Accarino IIS Altiero Spinelli via Leopardi 132 Sesto San Giovanni
Le collezioni di oggetti Prof. Accarino IIS Altiero Spinelli via Leopardi 132 Sesto San Giovanni Contenitori di oggetti Java mette a disposizione una libreria per gestire gruppi di oggetti organizzandola
DettagliEsempio 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
DettagliFondamenti di Informatica II
Università degli studi di Messina Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica e delle Telecomunicazioni Fondamenti di Informatica II Tipi di dati astratti(adt)- seconda parte Coda Struttura
DettagliCapitolo 14 Introduzione alle strutture di dati. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione
Capitolo 14 Introduzione alle strutture di dati Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Obiettivi del capitolo Capire come utilizzare le liste concatenate presenti
DettagliFondamenti di informatica Oggetti e Java. Luca Cabibbo. Collezioni++ (Aggiunte di Marco Patella) Capitolo 26.bis. aprile 2006.
Fondamenti di informatica Oggetti e Java Luca Cabibbo ++ (Aggiunte di Marco Patella) Capitolo 26.bis aprile 2006 1 Problemi delle collezioni Dal momento che ogni collezione contiene oggetti di tipo Object
DettagliStrutture dati. Le liste
Strutture dati Le liste Introduzione Una lista è una successione finita di valori di un tipo (insieme di valori e ordine). Come tipo di dato è qualificata dalle operazioni che ci si possono svolgere: inserimento
DettagliLaboratorio di Programmazione Lezione 3. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 3 Cristian Del Fabbro Prossima lezione GIOVEDÌ 12 NOVEMBRE ORE 14:00 Array a.k.a. vettore Un array è una collezione ordinata di dati omogenei (cioé sono tutti dello
DettagliLe liste con array. Rimuovere la perla rossa costringe a spostare molte altre perle. Dove mettere la perla verde se si è esaurito il filo?
Liste Linkate Le liste con array Volendo usare una metafora, l implementazione delle liste tramite array è come infilare le perle (gli oggetti della lista) in un filo di lunghezza predefinita. E chiaro
DettagliAlgoritmi e Strutture Dati
Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]
DettagliLe liste. ADT e strutture dati per la rappresentazione di sequenze. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez. 5
Le liste ADT e strutture dati per la rappresentazione di sequenze L ADT delle liste Una lista di valori di tipo A è una sequenza finita: a1, a2, L, an dove ai A, per ogni i valore lunghezza posizione L
DettagliListe 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
DettagliEsercizi Strutture dati di tipo astratto
Salvatore Cuomo Esercizi Strutture dati di tipo astratto Lezione n. 20 Parole chiave: Strutture dati, pile code, liste Corso di Laurea: Informatica Insegnamento: Programmazione II, modulo di Laboratorio
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 09 ADT: Lista, Pila, Coda A. Miola Marzo 2007 http://www.dia.uniroma3.it/~java/fondinf2/ ADT: Lista, Pila, Coda 1 Contenuti Tipo
DettagliAlgoritmi e Strutture Dati. Tipo di dato astratto e Strutture dati elementari
Algoritmi e Strutture Dati Tipo di dato astratto e Strutture dati elementari 1 Argomenti della lezione Tipi di dato astratto Strutture dati elementari Liste o Implementazione di liste in Java Stack Code
DettagliListe doppie. Doubly Linked Lists. GT: 6.2 (e 3.3) Argomenti della lezione
Liste doppie GT: 6.2 (e 3.3) Doubly Linked Lists 1 Argomenti della lezione ADT Position NodeList interface Position PositionList class DNode NodePositionList inserzione rimozione Iteratore ADT Iterator
DettagliIl TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3
Il TDA Dictionary Definizione informale Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche Una voce è una coppia (chiave, elemento) Le principali
Dettaglilezione 9 min-heap binario Heap e Alberi posizionali generali
lezione 9 Heap e Alberi posizionali generali min-heap binario Un min-heap è un albero binario quasi completo in cui ogni nodo i diverso dalla radice soddisfa la seguente proprietà: il valore memorizzato
DettagliFondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati
Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli Studi di Bologna Anno Accademico 2008/2009 Sommario
DettagliPile e Code. Definiamo una collezione come un gruppo di oggetti, detti gli elementi della collezione.
Pile e Code lezione 4 Collezioni Defiamo una collezione come un gruppo di oggetti, detti gli elementi della collezione. Durante il corso defiremo delle tecniche di base per gestire modo efficiente collezioni
Dettagliheap heap heap? max- e min-heap concetti ed applicazioni heap = catasta condizione di heap non è una struttura ordinata
heap heap concetti ed applicazioni heap = catasta condizione di heap 1. albero binario perfettamente bilanciato 2. tutte le foglie sono a sinistra ma non è un BST!! 3. ogni nodo contiene una chiave maggiore
DettagliTipi astratti pila e coda
Tipi astratti pila e coda Una pila è un tipo astratto che consente di rappresentare un insieme di elementi in cui ogni eliminazione ha per oggetto l elemento che è stato inserito per ultimo. Questa disciplina
DettagliImplementazione ADT: Alberi
Implementazione ADT: Alberi Livelli di astrazione 2001/2002 1 Esercitazione 5 (E6): alberi (tree) albero struttura dati fondamentale, soprattutto per le operazioni di ricerca tipi di albero con radice
DettagliInserimento 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
DettagliPolimorfismo parametrico vs polimorfismo per inclusione
Polimorfismo parametrico vs polimorfismo per inclusione Esercizio Definire il tipo di dato Stack con operazioni Push( element ) Pop() Non forzare una specifica implementazione Non forzare un tipo specifico
DettagliQuesta soluzione va contemplata quando le lunghezze stimate dalle liste usate sono significativamente maggiori delle dimensioni di un elemento.
Un ulteriore semplificazione si ottiene utilizzando un elemento sentinella (dummy) che non contiene informazione, ma serve a segnalare la fine (e l inizio) di una lista. Questa soluzione va contemplata
DettagliLinked Lists. Liste linkate (1) liste linkate ( stack, queues ), trees. Liste linkate come strutture
Linked Lists Liste linkate () La combinazione di class/struct e puntatori porta alla creazioni di interessanti Abstract Data Type liste linkate ( stack, queues ), trees Liste linkate come strutture struct
DettagliSommario. Le strutture dati elementari per implementare sequenze: Vettori Liste
Sequenze Sommario Le strutture dati elementari per implementare sequenze: Vettori Liste Strutture dati elementari Le strutture dati vettore e lista sono fra le strutture dati più usate e semplici Il loro
Dettagliin più stringhe,... ADT un tipo è caratterizzato dalle operazioni consentite su di esso: un numero è qualcosa che si può moltiplicare, sommare,...
ADT un tipo è caratterizzato dalle operazioni consentite su di esso: un numero è qualcosa che si può moltiplicare, sommare,... una stringa è qualcosa che si può concatenare, spezzare in più stringhe,...
DettagliLaboratorio di Algoritmi e Strutture Dati. Code con Priorità
Laboratorio di Algoritmi e Strutture Dati Code con Priorità Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Materiale di base gentilmente concesso
DettagliTipi di dato e Strutture dati elementari
Tipi di dato e Strutture dati elementari Ing. Paolo Craca Anno accademico 2007/2008 Tipi di dato e Strutture dati elementari 1 / 40 Cosa vedremo in questo seminario 1 Introduzione 2 Pile 3 Code 4 5 Bibliografia
DettagliStrutture dati elementari
Strutture dati elementari Damiano Macedonio Università Ca' Foscari di Venezia mace@unive.it Original work Copyright Alberto Montresor, University of Trento (http://www.dit.unitn.it/~montreso/asd/index.shtml)
DettagliAlberi. 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
DettagliPILE E CODE. Pile (stack):
PILE E CODE Sono tipi di dato che consentono di rappresentare sequenze di elementi in cui gli inserimenti e le cancellazioni sono eseguiti con particolari modalita` (politiche o discipline). Pile (stack):
DettagliPile e code. ADT e strutture dati per la rappresentazione di sequenze ad accesso LIFO e FIFO
Pile e code ADT e strutture dati per la rappresentazione di sequenze ad accesso LIFO e FIFO Le Pile Una pila è una struttura dati lineare, alla quale gli elementi possono essere aggiunti o sottratti da
DettagliInformatica 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
DettagliEsercitazione: Implementazione in linguaggio C dell ADT. Stack con l utilizzo. di linked list
Esercitazione: Implementazione in linguaggio C dell ADT Stack con l utilizzo di linked list Laboratorio di Programmazione Introduzione un ADT (Abstract Data Type) è un modello (formale) che generalizza
DettagliLaboratorio 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
DettagliAlgoritmi e Strutture Dati. Strutture di dati
Algoritmi e Strutture Dati Strutture di dati Alberto Montresor Università di Trento 2017/10/05 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Sommario
DettagliCorso di Algoritmi e Strutture Dati con Laboratorio. Tipi di dato pila e coda
Corso di Algoritmi e Strutture Dati con Laboratorio Tipi di dato pila e coda Uno stack è una collezione di elementi ( tipo di dato astratto) che supporta le seguenti operazioni tipiche: push, pop, peek
DettagliListe, Pile e Code. 1. L ADT Lista. Liste Pile e Code Pag. 1/18
Liste Pile e Code Pag. 1/18 Liste, Pile e Code Le liste, le pile e le code rappresentano tre ADT elementari che ricorrono frequentemente nella vita reale. Esempi usuali di una lista, una pila ed una coda
DettagliEsempio 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
DettagliBank. Bank. BankAccount. Bank. Bank. private BankAccount[] conti; // Posizione attuale private int posizioneattuale;...
Bank BankAccount Bank Bank Bank BankAccount private BankAccount[] conti; // Posizione attuale private int posizioneattuale;... Bank Bank public Bank(String nome, String internationalcode, int dimensione)
DettagliIn questa lezione Strutture dati elementari: Pila Coda
In questa lezione Strutture dati elementari: Pila Coda 1 strutture dati (astratte) Una struttura dati astratti consiste di uno o più insiemi con delle operazioni che li modificano (insiemi dinamici). Le
DettagliLa struttura dati PILA
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati PILA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una pila (o stack) è una struttura dati astratta
DettagliAlberi. In informatica, un albero è un modello astratto di una struttura dati gerarchica
Il TDA Tree Alberi In informatica, un albero è un modello astratto di una struttura dati gerarchica Struttura dati non lineare Si pensi al file system di un sistema operativo Le relazioni in un albero
DettagliEsempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList Fondamenti di Informatica L-B 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito
DettagliEsercizio. Scrivere una classe ListMap<K, V> che implementa la mappa con una lista. Strutture Dati
Esercizio Scrivere una classe ListMap che implementa la mappa con una lista Esercizio Si scriva un metodo public static PositionList preorder(linkedbinarytree T) che preso in
DettagliL' ADT grafo è un contenitore di elementi memorizzati nelle posizioni del grafo (vertici e archi)
L' ADT grafo è un contenitore di elementi memorizzati nelle posizioni del grafo (vertici e archi) le informazioni possono essere memorizzate sia sui vertici sia sugli archi del grafo Metodi fondamentali
DettagliNotazione grafica UML
Notazione grafica UML Estensione e implementazione in UML: estende implementa Per classi astratte e interfacce i nomi vanno in corsivo preceduti da e UtenteComputer
DettagliLezione XXVII Lu 20-Nov File e Flussi in Java. Gestione di file in Java. Gestione di file in Java. Lettura di file di testo
Lezione XXVII Lu 20-Nov-2006 File e Flussi in Java 1 Gestione di file in Java Finora abbiamo visto programmi Java che interagiscono con l utente soltanto tramite i flussi standard di ingresso e di uscita
DettagliLa struttura dati LISTA
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati LISTA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una lista è una struttura dati astratta che rappresenta
DettagliContenitori: Pile e Code
Contenitori: Pile e Code D O T T. I N G. L E O N A R D O R I G U T I N I D I PA R T I M E N T O I N G E G N E R I A D E L L I N F O R M A Z I O N E U N I V E R S I T À D I S I E N A V I A R O M A 5 6 5
DettagliGenerics & Collections
Generics & Collections Ingegneria del software Jody Marca jody.marca@polimi.it I Generics 2 I Generics rendono possibile definire tipi parametrici tramite classi ed interfacce che gestiscono tipi generici
DettagliTipi di dati astratti e strutture dati (capitolo 14, e ancora capitolo 9)
SETTIMANA 8 Tipi di dati astratti e strutture dati (capitolo 14, e ancora capitolo 9) Tipi di dati astratti Definizione una struttura dati (data structure) è un modo sistematico di organizzare i dati in
DettagliSommario. Collezioni. Collezioni: Liste: Pile (stack) Collezioni. Collezioni. Collezioni Struttura indicizzata (array) Nodi
Sommario : Array e liste. Nodi: dati e riferimenti. Liste: LinkedList: specifica e implementazione. Prestazioni. Pile (stack) Informatica Medica, I semestre, C++ 1 Una collezione (contenitore) è un oggetto
DettagliADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2)
ADT LISTA Pochi Linguaggi forniscono tipo lista fra predefiniti (LISP, Prolog); per gli altri, ADT lista si costruisce a partire da altre strutture dati (in C tipicamente vettori o puntatori) OPERAZIONI
DettagliCapitolo 17. Introduzione alle strutture di dati. Capitolo 17 Introduzione alle strutture di dati
Capitolo 17 Introduzione alle strutture di dati 1 Figura 1 Inserire un elemento in una lista concatenata 2 Figura 2 Un iteratore di lista 3 Figura 3 Una visione astratta dell iteratore di lista 4 File
DettagliAlberi ( GT. 7 ) In informatica, un albero è un modello astratto con cui viene rappresentata una struttura gerarchica
Alberi ( GT. 7 ) Albero definizioni Albero ADT (Abstract Data Type) Algoritmi di base su alberi Alberi binari Strutture dati per rappresentare alberi Implementazione AlberoBinario 1 Alberi (GT. 7) In informatica,
DettagliAlberi. Definizioni principali
Definizioni principali Un albero è una struttura dati che contiene oggetti organizzati gerarchicamente (a differenza della lista di nodi, dell'array list, i cui elementi sono organizzati linearmente) radice
DettagliStampare una Pila. Stampare una Pila. Stampare una Pila. Stampare una Pila
Stampare una Pila Stampare una Pila Quando si stampa un Pila gli elementi appaiono nell ordine inverso a quello di inserimento; inoltre la Pila si vuota. Supponiamo di avere introdotto nella Pila i valori
DettagliProgettazione By Contract
Progettazione By Contract Documentazione di progetto Contratti per i metodi Correttezza dell implementazione invarianti per le classi Verifica asserzioni Eccezioni Progettazione By Contract Contratti per
Dettagli4 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
DettagliAstrazione Dati. Nicola Fanizzi. Linguaggi di Programmazione [010194] 10 mag, Dipartimento di Informatica Università degli Studi di Bari
Astrazione Dati Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 10 mag, 2016 Sommario 1 Astrazione dati Incapsulamento Esempio / ADT pila
DettagliStruttura dati astratta Coda
CODE Struttura dati astratta Coda La coda o queue è una struttura dati astratta in cui l'inserimento e l estrazione sono consentite solo in specifiche posizioni; in particolare, l'inserimento è consentito
DettagliCoda su lista concatenata
Cosa studiare nel libro Capitolo 7: tutto tranne Argomenti avanzati 7.2 e 7.5 Capitolo 8: solo 8.5, 8.6, 8.7, 8.8 e Argomenti avanzati 8.1 Capitolo 9: tutto fino a 9.6 (escluso) Capitolo 10: tutto fino
Dettagli22 - Strutture Dati (Java Collections Framework)
22 - Strutture Dati (Java Collections Framework) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
DettagliAlgoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc
Algoritmi e Strutture di Dati I 1 Algoritmi e Strutture di Dati I Massimo Franceschet http://www.sci.unich.it/ francesc Algoritmi e Strutture di Dati I 2 Oggetti e puntatori Un oggetto è un area di memoria
Dettagli18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di
DettagliImplementazione con alberi binari di ricerca
public class LinkedBinaryTree implements BinaryTree { /** Espande una foglia in un nodo interno con due foglie come figli */ public void expandexternal(position v, E l, E r) throws InvalidPositionException
DettagliImplementazione del ADT Pila senza array dinamici
Implementazione del ADT Pila senza array dinamici import java.io.*; class Nodo{ // classe self-referential public int Info; // campo informativo public Nodo Next; // campo puntatore Nodo(){ Info =0; Next
DettagliAlbero Binario GT 7.3. interfacce di Positio<E>, Tree<E>, e BinaryTree<E>; il file TestLinkedBinaryTree.java
Laboratorio Java Albero Binario GT 7.3 Esercitazione Sono dati : interfacce di Positio, Tree, e BinaryTree; il file TestLinkedBinaryTree.java e i file.class che implementano le interfacce www.dei.unipd.it/corsi/fi2ae
DettagliProgrammazione II Compitino (Vers. B)
Programmazione II Compitino (Vers. B) 15 gennaio 2015 Cognome Jackson Nome Michael Matricola 696969 Anno di corso 1 Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi
DettagliIl Java Collections Framework
Il Java Collections Framework Il Java Collections Framework è una libreria formata da un insieme di interfacce e di classi che le implementano per lavorare con gruppi di oggetti (collezioni). Le interfacce
Dettagli9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea
DettagliADT: Abstract Data Type. Quasi ADT. ADT per collezioni di dati (code generalizzate) 04 I tipi di dati astratti (I parte)
ADT: Abstract Data Type I tipi di dati astratti (I parte) Gianpiero Cabodi e Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Scopo Livello di astrazione sui dati tale da mascherare completamente
DettagliIntroduzione al Java Collections Framework. Java Collections Framework (cont.) Interfacce del Collections Framework
Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Introduzione al Java Collections
DettagliCONCRETE (interne): è la effettiva implementazione della struttura nel linguaggio e relativa allocazione in memoria della struttura astratta
STRUTTURE DI DATI DINAMICHE Le strutture dati sono insiemi di dati caratterizzati dalle proprietà logiche e dalla loro forma di aggregazione (vettore, matrice, pila, coda ); le possiamo analizzare da un
DettagliSpecifica: la sintassi. Specifica: la semantica. Specifica: la semantica
Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi Che cos è un tipo di dato? Tutti i linguaggi di programmazione tipati forniscono tipi ed operatori predefiniti
DettagliIntroduzione al Java Collections Framework
Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Insegnamento di PROGETTAZIONE
DettagliTipi di dati astratti e strutture dati (capitolo 14, e ancora capitolo 9)
SETTIMANA 8 Tipi di dati astratti e strutture dati (capitolo 14, e ancora capitolo 9) Tipi di dati astratti Definizione una struttura dati (data structure) è un modo sistematico di organizzare i dati in
DettagliCorso: Strutture Dati Docente: Annalisa De Bonis
Heap Corso: Strutture Dati Docente: Annalisa De Bonis Definizione l Un heap è un albero binario che contiene entrate della forma (key, value) nei suoi nodi e soddisfa le seguenti proprietà: l Heap-Order:
DettagliTipi di Dati Astratti
Tipi di Dati Astratti April 19, 2017 Dati e Tipi di Dato Tipo di dato: concetto di alto livello Macchina fisica: unico tipo di dato sequenze di bit Macchine Astratte: tipi di dato più complessi Tipo di
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 12 ADT: Lista, Pila, Coda A. Miola Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf2/ ADT: Lista, Pila, Coda 1 Contenuti!Tipo
DettagliProgrammazione ad Oggetti Modulo A (Esame del 11/9/2015)
Programmazione ad Oggetti Modulo A (Esame del 11/9/2015) Esercizio 1 Considerate la seguente gerarchia di classi: class A { public void print(string s) { System.out.println(s); public void m1() { print("a.m1");
DettagliUna breve introduzione all implementazione in C di algoritmi su grafo
Una breve introduzione all implementazione in C di algoritmi su grafo A cura di Gianmaria Leo Introduzione La lezione è un introduzione a concetti e strumenti che permettono l implementazione di algoritmi
DettagliCOLLEZIONI. SOMMARIO Collezioni: Liste: ITERATORI ITERATORI
SOMMARIO Collezioni: Array e liste. Iteratori. Classi interne. Nodi: dati e riferimenti. Liste: LinkedList: specifica e implementazione. Prestazioni. COLLEZIONI Una collezione (contenitore) è un oggetto
DettagliGrafi: visita generica
.. Grafi: visita generica Una presentazione alternativa (con ulteriori dettagli) Algoritmi di visita Scopo: visitare tutti i vertici di un grafo (si osservi che per poter visitare un vertice occorre prima
DettagliJava vs Ocaml. Una prima analisi
Java vs Ocaml Una prima analisi Alcune cara6eris7che di Java richiedono una conoscenza de6agliata delle librerie Sistemi di supporto forniscono mol7 strumen7 per programmare con Java (Ecplise è un esempio
Dettagli