Argomenti della lezione. Tipo di dato astratto. Array. Tipo di dato Lista. Liste Implementazione di liste in Java Stack Code
|
|
- Agnella Pagano
- 6 anni fa
- Visualizzazioni
Transcript
1 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 Data Type): insieme di oggetti e insieme di operazioni definite su di esso! Es.: lista con operazioni di inserimento e cancellazione! Attenzione: l ADT specifica cosa fa ogni operazione, non come! In Java: " Rappresentazione con interfaccia " Implementazione con classe 1 2 Array! Memorizzazione di elementi omogenei in locazioni continue Array unidimensionali: int[] num; String[] str; Creazione: num = new int[5]; str = new String[6]; Lunghezza: num.length str.length Accesso al singolo elemento: a[0] = 100; str[1] = str[2]; Array bidimensionali: int[][] mat = new int[4][3]; for(int i = 0; i<4; i++){ mat[i][0] = i; mat[i][1] = i+1; mat[i][2] = i+2; Tipo di dato Lista! Insieme di elementi tra i quali è definito un ordinamento totale.! Numerose varianti! Ammette (almeno) le operazioni seguenti: cons(elem): inserisce elem in testa alla lista cdr(): elimina l elemento in testa alla lista car(): restituisce l elemento in testa alla lista senza eliminarlo! Nelle implementazioni (es. Java) sono spesso presenti altre operazioni cons(elem, i), remove(i), get(i) 3 4
2 Implementazione delle liste Implementazione con array! Array Si usa un array in memoria! Strutture collegate Ogni elemento contiene un riferimento al successivo! Occorre conoscere la dimensione max della lista! Può portare a spreco di memoria! Costo delle principali operazioni: cons: O(n) (caso peggiore: elemento in prima posizione) cdr: O(n), (caso peggiore: primo elemento) car: O(1) A 0 A 1 A 2 A N-3 A N-2 A N-1 Elemento non usato Inserimento in pos Implementazione con strutture collegate! Efficienza cons, remove: O(i) (bisogna trovare la posizione dell elemento da inserire/rimuovere). O(1) per inserimenti/cancellazioni in prima posizione get: O(i) (posizione dell elemento cercato) Altri tipi di lista! Lista doppia: consente una scansione in entrambe le direzioni A 0 A 1 A i A N A 0 A 1 A i A N! Lista circolare: consente di rappresentare strutture in cui l ordinamento è mod N Inserimento in pos. 1 A 0 A 1 A i A N 7 8
3 Liste in Java Liste in Java/2! Questi ADT sono rappresentati e implementati da interfacce e classi del package java.util (in realtà strutture dati più ricche)! L interfaccia più generale è Collection! Rappresenta un insieme di elementi, eventualmente replicati (multinsieme)! Ammette operazioni di inserimento e cancellazione 9! Interfaccia List! Rappresenta una collezione ordinata di elementi! Ammette duplicati! Implementazioni: classi LinkedList, ArrayList e Vector 10 Liste in Java/3 Classe LinkedList Classe LinkedList! Realizza una lista doppiamente concatenata! Puntatori a inizio e fine della lista Classe ArrayList! Realizza lista mediante array! Dimensione puo essere variata dinamicamente.! LinkedList: realizza una lista come generica lista doppiamente concatenata.! Costruttore LinkedList LinkedList(): costruttore! Metodi principali: void add(object o): inserisce alla fine della lista void addfirst(object o): inserisce in testa alla lista Object removefirst(): elimina all inizio della lista Object removelast(): elimina alla fine della lista Object remove(int pos): rimuove l oggetto in posizione pos Object getfirst(): restituisce il primo oggetto Object getlast(): restituisce l ultimo oggetto Object get(int pos): restituisce l oggetto in posizione pos Iterator iterator(): restituisce un Iterator sulla lista 11 12
4 Classe ArrayList Iteratori! Corrisponde all implementazione con array! Costruttore ArrayList ArrayList() : costruisce lista vuota! Metodi principali: Simili a quelli di LinkedList Fornisce anche metodi per la modifica delle dimensioni dell array! Sono oggetti che implementano l interfaccia Iterator! Servono a scorrere sequenzialmente oggetti di tipo Collection (quindi anche liste)! Esempio:... LinkedList mylist = new LinkedList();... Iterator myiterator = mylist.iterator(); Iteratori/2 Classe Vector! myiterator permette di scorrere gli elementi di mylist! Metodi: Object next(): restituisce l elemento successivo della lista boolean hasnext(): vero se la lista contiene altri elementi void remove(): elimina dalla lista l elemento corrente! E solamente un oggetto di ausilio per scorrere la lista! Si può ovviamente scorrere la lista direttamente usando gli indici!e simile ad ArrayList!I metodi sono simili a quelli di ArrayList!E una classe sincronizzata E consigliabile usarla quando più thread che accedono alla stessa struttura dati 15 16
5 Classe Vector/2 Esempi di uso della classe Vector e dell interfaccia Iterator Array:! Possono contenere tipi di dati primitivi! Dimensione fissa! Pochi metodi ma maggiore efficienza Classe Vector! Contiene Object. I tipi di dati primitivi devono essere convertiti mediante gli opportuni wrapper.! Gestione flessibile dello spazio di memoria.! Gran numero di metodi a scapito dell'efficienza Vector v = new Vector(); String st = br.readline(); // br BufferedReader while (st!= null) { v.addelement(st); st = br.readline(); System.out.println(); Iterator it = v.iterator(); while (it.hasnext()) System.out.println(it.next()); Vector di tipi di dato primitivi... Vector v = new Vector(); String st = br.readline(); // br BufferedReader while (st!= null) { int num = Integer.parseInt(st); v.addelement(new Integer(num)); st = br.readline(); System.out.println(); Iterator it = v.iterator(); while (it.hasnext()) System.out.println(it.next()); Tipo astratto Pila! Lista nella quale inserimenti e cancellazioni avvengono solo in testa (disciplina LIFO).! Operazioni sempre presenti push(el): inserisce l'elemento specificato da el in cima alla pila pop(): elimina l'elemento in cima alla pila top(): restituisce l'elemento in cima alla pila senza cancellarlo dalla lista isempty(): verifica se la pila è vuota! Altre operazioni clear(): elimina tutti gli elementi dalla pila 20
6 Implementazione del tipo Pila Implementazione Java con Vector! Realizzazione tramite Array A i A 1 A 0 top = i! Liste: realizzazione tramite lista concatenata Start top A 0 A 1 A i A N public class Stack { private java.util.vector pool= new java.util.vector(); public Stack(){ public Stack(int n){ pool.ensurecapacity(n) public void clear(){ pool.clear(); public boolean isempty(){ return pool.isempty(); public Object topel(){ return pool.lastelement(); public Object pop(){ return pool.remove(pool.size()-1); public void push(object el){ pool.addelement(el); Implementazione tramite LinkedList Implementazione tramite java.util.stack public class LLStack { private list= new java.util.linkedlist(); public LLStack(){ public void clear(){ list.clear(); public boolean isempty(){ return list.isempty(); public Object topel(){ return list.getlast(); public Object pop(){ return list.removelast(); public void push(object el){ list.add(el); public String tostring(){ return list.tostring(); Attenzione: java.util.stack non realizza una vera pila (ci sono operazioni in più) 23! Stack Stack(): Crea una pila vuota! boolean empty(): restituisce true se la pila è vuota! Object peek(): realizza l'operazione topel()! Object pop(): rimuove e restituisce l'elemento affiorante! Object push(el): inserisce l'elemento specificato in cima alla pila! int search(el):restituisce la posizione di el all'interno della pila 24
7 Tipo astratto coda! Lista nella quale gli inserimenti avvengono in coda e le cancellazioni (estrazioni) in testa (disciplina FIFO)! Operazioni sempre presenti isempty(): verifica se la coda è vuota enqueue(el): inserisce l'elemento specificato da el alla fine della coda dequeue(): elimina il primo elemento della coda firstel(): restituisce il primo elemento della coda senza eliminarlo! Altre operazioni clear(): elimina tutti gli elementi dalla coda Implementazione di code con array A 0 A 1 A 2 A N-3 A N-2 A N-1 testa coda enqueue -> coda = coda + 1 (mod N) dequeue -> testa = testa + 1 (mod N) Elemento non usato Se (coda == testa 1 mod N) coda piena Se (coda == testa) coda vuota (un solo elemento presente) Implementazione di coda con Array circolare! first: indice del primo elemento - testa! last: indice dell'ultimo - coda! size: numero di elementi dell'array public class ArrayQueue { private int first, last, size; private Object[] storage; private static final int DEFAULTSIZE = 100; // metodi nella prossima slide Implementazione di coda con Array circolare/2 public ArrayQueue(){ this(defaultsize); public ArrayQueue(int n){ size = n; storage = new Object[size]; first = last = -1; public boolean isfull(){ return ((first == 0) && (last == size - 1)) (first == last + 1); public boolean isempty(){ return first == -1; 27 Algoritmi e strutture dati 28
8 Implementazione di coda con Array circolare/3 public void enqueue(object el){ if(!isfull()) if ((last == size - 1) (last == -1)) { storage[0] = el; last = 0; if (first == -1) //caso coda vuota first=0; else storage[++last] = el; Implementazione di coda con Array circolare/4 public Object dequeue(){ Object tmp = null; if(!isempty()) { tmp = storage[first]; if (first == last) // caso unico elemento last = first = -1; else if (first == size - 1) first = 0; else first++; return tmp; // Restituisce null se coda vuota Implementazione di coda con Array circolare/5 public void printall(){ if(isemtpy()) System.out.println("Coda vuota."); else { int i = first; do { System.out.print(storage[i] + " "); i = (i + 1) % size; while(i!= ((last + 1) % size)); System.out.println(); // fine classe ArrayQueue Implementazione di una coda con lista concatenata public class QueueNode { protected Object info; protected QueueNode next = null; public QueueNode(Object el) { info = el; public class Queue { private QueueNode head, tail; public Queue() { head = tail = null; 31 32
9 Implementazione di una coda con lista concatenata/2 Implementazione di una coda con lista concatenata/3 public boolean isempty() { return head == null; public void clear() { head = tail = null; public Object firstel() { return head.info; public void enqueue(object el) { QueueNode q = new QueueNode(el); if (!isempty()) { tail.next = q; tail = tail.next; else head = tail = q; Implementazione di una coda con lista concatenata/4 public Object dequeue() {// cancella il nodo in // testa e restituisce il campo info if (!isempty()) { Object el = head.info; if (head == tail) // un solo nodo? head = tail = null; else head = head.next; return el; else return null; // fine metodo dequeue // fine classe Queue Riconoscimento di stringhe parenteticamente corrette! La stringa vuota è parenteticamente corretta! Se P 1, P 2 e P 3 sono corrette, allora lo è anche P 1 (P 2 )P 3, P 1 [P 2 ]P 3 o P 1 {P 2 P 3! Es.: ab(ax)[(b)du{(mb)] è corretta a(ax)[c e a){b(e non sono corrette 35 36
10 Algoritmo (solo un tipo di parentesi) Algorithm stringanalyzer balanced = true; S = <Leggi la stringa> c = <primo carattere di S> count = 0; while ((! <fine di S>) && (count >= 0)) { if (c == ( ) count++; else if (c == ) ) count--; c = <prossimo carattere di S> if ((fine di S) && (count!= 0)) balanced = false; Provare a implementare il riconoscimento con parentesi di qualunque tipo. Es.: - fg{([{ab(vc)gkj]) è corretta - gh{(df[ghj]gh)hj non è corretta 37 Algoritmo (caso generale)! Usa uno stack! Se arriva (, [ o { inseriscila nello stack! Se arriva ), ] o confrontala con l elemento affiorante Se non corrispondono allora la stringa non è bilanciata! Se si esamina la stringa fino alla fine e lo stack non è vuoto la stringa non è bilanciata. Es.: (((er[]) ( [ ( ) ] 38
Algoritmi 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 concatenate. Collezione ordinata di nodi. Carlo Paolo Simona. Anna. ciascun nodo contiene due riferimenti:
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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):
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
DettagliQuesti, invece, sono esempi di enunciati in cui esistono mancate corrispondenze:
4 Pile e code 4.1 Pile Come enunciato nel primo capitolo, i tipi di dati astratti ci consentono di rinviare la specifica realizzazione di un tipo di dati finchè non è ben chiaro quali operazioni siano
DettagliSul pattern Iterator
Sul pattern Iterator 1 Introduzione Capita spesso di aver a che fare con strutture dati complesse, come ad esempio, liste, code, ecc. È buona norma accedere a queste strutture senza esporre la loro organizzazione.
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
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
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/
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
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
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
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]
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
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
DettagliImplementazione 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
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
DettagliQUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio
QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre
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
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
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
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
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
DettagliIntroduzione Generics Iteratori. Collezioni in Java. Dr. Giulio Pellitta. 13 aprile 2011
13 aprile 2011 Cos è una collezione? Gerarchia delle collezioni Introduzione Una collezione è semplicemente un oggetto che raggruppa più oggetti (detti elementi della collezione) in una singola unità.
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
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
DettagliCollezioni. (a cura del Prof. Marco Patella)
(a cura del Prof. Marco Patella) 1 Introduzione al Java Collections Framework Una collezione (o contenitore) consente di organizzare e gestire un gruppo di oggetti collezioni (vere e proprie) mappe implementate
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
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
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
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
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,...
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
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
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
DettagliLa Struttura Dati Pila
La Struttura Dati Pila La pila o stack è una particolare struttura dati in cui l'inserimento e la cancellazione sono consentite solo in una specifica posizione, chiamata cima (top) dello stack. La gestione
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
DettagliLezione 11 programmazione in Java. Anteprima. Gestione della memoria
Lezione 11 programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Gestione della Memoria Dati dinamici e statici Il passaggio di parametri
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
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'
DettagliADT STACK (PILA) ADT STACK (PILA)
ADT STACK (PILA) Collezione di elementi dello stesso tipo (multi-insieme) gestito con politica LIFO (Last-In -- First-Out): il primo elemento entrato è l ultimo a uscire Svariate applicazioni del concetto
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
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
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
DettagliProgrammazione 2 PILE E CODE
Programmazione 2 PILE E CODE .. Le pile In alcuni casi è utile disporre di strutture dati che hanno un solo punto di accesso per inserire e reperire i dati. Ad esempio, una pila di libri. In una struttura
DettagliEsercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore
DettagliTipo di Dato. Abstract Data Types. Tipi di Dato Astratti /2. Tipi di Dato Astratti /1
Università Roma La Sapienza Corsi di Laurea Informatica/Tecnologie Informatiche Abstract Data Types Prof. Stefano Guerrini guerrini@di.uniroma1.it Programmazione II (can. P-Z) A.A. 2005-06 Tipo di Dato
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
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)
DettagliIl linguaggio Java: aggiunte in Java 1.5
.. Il linguaggio Java: aggiunte in Java 1.5 Una breve presentazione GENERICI Java 1.5 introduce i generici: classi che hanno un parametro di tipo. Nelle versioni precedenti a Java 1.5 si può definire:
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
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
Dettaglise invoco un metodo di Object che è ridefinito in Point, viene invocato il metodo definito in Point
Gli HashSet Tipo predefinito che rappresenta insiemi di Object Cosa succede se... Posso mettere un riferimento a un Point in una variabile Object Object o=new Point(12,3); è quasi tutto come se l oggetto
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
DettagliCorso di Algoritmi e Strutture Dati con Laboratorio. Java Collections Framework (I parte)
Corso di Algoritmi e Strutture Dati con Laboratorio Java Collections Framework (I parte) L infrastruttura JCF è una raccolta di interfacce e classi, tra loro correlate, appartenenti al pacchetto java.util.
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
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
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
DettagliI PUNTATORI E LE STRUTTURE DATI DINAMICHE. Cosimo Laneve/Ivan Lanese
I PUNTATORI E LE STRUTTURE DATI DINAMICHE Cosimo Laneve/Ivan Lanese argomenti 1. dichiarazioni di puntatori 2. le operazione su puntatori (NULL, new, delete, &, *) 3. puntatori passati come parametri e
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
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
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
DettagliSOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE
SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software
DettagliCORSO DI PROGRAMMAZIONE
ISTITUTO TECNICO INDUSTRIALE G. M. ANGIOY SASSARI CORSO DI PROGRAMMAZIONE PILE E CODE DI DATI DISPENSA 11.02 11-02_Pile_Code_[ver_15] Questa dispensa è rilasciata sotto la licenza Creative Common CC BY-NC-SA.
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
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
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
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
Dettaglialberi tipo astratto, implementazione, algoritmi
alberi tipo astratto, implementazione, algoritmi argomenti tipo astratto albero definizione implementazione in Java algoritmi di visita alberi binari implementazione di alberi binari in Java ASD - Alberi
DettagliTesto di Riferimento (usato nei corsi precedenti)
Parti II e III 1 Framework Collections in Java: API Java http://java.sun.com/ Generics in Java Tutorial Sun (in inglese) http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf Testo di Riferimento (usato
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
DettagliArgomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto
Argomenti della lezione Introduzione agli Algoritmi e alle Strutture Dati Operazioni su Liste Dr. Emanuela Merelli Tipi di Dato Astratto Lista Lineare Pila Coda Concetto di Struttura dati dinamiche Lista
DettagliTipi astratti di dato e strutture di dati dinamiche: note introduttive
Università degli Studi di Palermo Facoltà di Ingegneria Tipi astratti di dato e strutture di dati dinamiche: note introduttive Edoardo Ardizzone & Riccardo Rizzo Appunti per il corso di Fondamenti di Informatica
DettagliLe Collezioni (Java Collections)
Le Collezioni (Java Collections) G. Grossi 20 dicembre 2006 Indice 1 Le Collezioni (Java Collections) Esempi di Liste : for-each e Iteratori Indice Le Collezioni (Java Collections) 1 Le Collezioni (Java
DettagliLaboratorio 9 ( Java 4 ) Classe astratta per BFS su grafo
Laboratorio 9 ( Java ) Classe astratta per BFS su grafo Testo esercitazione Scaricare il file EseBFS.zip, scompattarlo ed analizzare le classi in esso contenute con particolare attenzione alla classe astratta
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
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
DettagliCosa sono i Generics?
Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 13 - Generics in Java 1 Cosa
DettagliCorso di Progettazione del Software
T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 1/28 Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale Corso di
Dettagli