Orario delle lezioni LABORATORIO TEORIA. mercoledì. martedì aula P/4. lab Turing. Strutture Dati
|
|
- Niccolina Boni
- 4 anni fa
- Visualizzazioni
Transcript
1 Orario delle lezioni LABORATORIO martedì TEORIA mercoledì lab Turing aula P/4
2 Libro di testo Data Structures & Algorithms in Java Michael T. Goodrich Roberto Tamassia John Wiley & Sons, Inc. (quarta edizione)
3 Sito del corso
4 Esercitazioni integrative Dal 23 marzo: Corso integrativo di esercitazione Prof. Rosalba Zizza Venerdì dalle 9.00 alle Laboratorio Reti
5 Strutture dati e tipi astratti di dati Algoritmo Struttura dati Informazione organizzata allo scopo di migliorare l'efficienza dell'algoritmo Tipo astratto di dati Definisce con rigore matematico una struttura dati Programma Struttura dati implementata
6 La struttura dati pila (stack) Inserimento, cancellazione e ricerca avvengono solo in una posizione inserimento e cancellazione avvengono secondo una strategia LIFO (last in first out): inserimento: un nuovo oggetto viene inserito in cima allo stack cancellazione: viene cancellato sempre l'oggetto in cima allo stack viene cancellato sempre l'oggetto che è stato inserito per ultimo
7 Il tipo astratto di dati (ADT) stack Tipo di dati e operazioni Dati: oggetti arbitrari (stringhe, interi, pezzi di codice,...) Operazioni: - push (element): inserisce un elemento - element pop(): restituisce l'elemento inserito per ultimo e lo rimuove - element top(): restituisce l'elemento in cima - integer size(): restituisce il numero di elementi presenti - boolean isempty(): è vero se e solo se non ci sono elementi
8 Un esempio Operazione Output
9 Un esempio Operazione push(5) Output 5
10 Un esempio Operazione push(5) push(8) Output 8 5
11 Un esempio Operazione push(5) push(8) pop() Output 8 5
12 Un esempio Operazione Output push(5) push(8) pop() 8 push(3) 3 5
13 Un esempio Operazione Output push(5) push(8) pop() 8 push(3) pop() 3 5
14 Un esempio Operazione Output push(5) push(8) pop() 8 push(3) pop() 3 pop() 5
15 Un esempio Operazione Output push(5) push(8) pop() 8 push(3) pop() 3 pop() 5 pop()?
16 Il tipo astratto di dati (ADT) stack Eccezioni Qual è il risultato di un'operazione di pop() (o di top()) su uno stack vuoto?
17 Il tipo astratto di dati (ADT) stack Eccezioni Qual è il risultato di un'operazione di pop() (o di top()) su uno stack vuoto? Una exception si verifica quando un'operazione non può essere eseguita. Ad esempio: - top() su uno stack vuoto - pop() su uno stack vuoto
18 Applicazioni Cronologia pagine visitate con un navigatore web Ogni volta che viene visitato un nuovo sito, l'indirizzo del sito corrente viene inserito nello stack con un'operazione di push.
19 Applicazioni Cronologia pagine visitate con un navigatore web Ogni volta che viene visitato un nuovo sito, l'indirizzo del sito corrente viene inserito nello stack con un'operazione di push.
20 Applicazioni Cronologia pagine visitate con un navigatore web Ogni volta che viene visitato un nuovo sito, l'indirizzo del sito corrente viene inserito nello stack con un'operazione di push. In cima allo stack ci sarà sempre l'indirizzo dell'ultima pagina visitata La proprietà LIFO dello stack ci garantisce che il tasto back ci farà visualizzare le pagine in ordine cronologico inverso (dalla più recente alla più vecchia)
21 Applicazioni Cronologia pagine visitate con un navigatore web La pressione del tasto "back" del navigatore genera un'operazione di pop dello stack. Ogni volta che viene visitato un nuovo sito, l'indirizzo del sito corrente viene inserito nello stack con un'operazione di push. In cima allo stack ci sarà sempre l'indirizzo dell'ultima pagina visitata La proprietà LIFO dello stack ci garantisce che il tasto back ci farà visualizzare le pagine in ordine cronologico inverso (dalla più recente alla più vecchia)
22 Applicazioni Cronologia pagine visitate con un navigatore web La pressione del tasto "back" del navigatore genera un'operazione di pop dello stack. Ogni volta che viene visitato un nuovo sito, l'indirizzo del sito corrente viene inserito nello stack con un'operazione di push.
23 Implementazione stack Una semplice soluzione con array Siccome quando si crea un array è necessario definire la sua taglia (size), l'implementazione dello stack mediante array comporta la specifica della massima taglia N dello stack. Lo stack viene implementato con un array di N elementi e una variabile t che indica l'indice dell'elemento in cima allo stack top t N-1
24 Implementazione stack con array Pseudocodice dei metodi top t N-1 Algorithm size(): return t + 1
25 Implementazione stack con array Pseudocodice dei metodi top t N-1 Algorithm isempty(): return (t < 0)
26 Implementazione stack con array Pseudocodice dei metodi top t N-1 Algorithm top(): if isempty() then throw a EmptyStackException return S[t]
27 Implementazione stack con array Pseudocodice dei metodi top t N-1 Algorithm push(element): if size() = N then throw a FullStackException t := t + 1 S[t] := element
28 Implementazione stack con array Vantaggi e svantaggi Vantaggi Implemetazione semplice ed efficiente Memoria usata: O(N) Complessità dei metodi (size, isempty, top, push, pop): O(1) Svantaggi Bisogna fissare a priori un limite superiore N alla massima taglia dello stack Un'applicazione potrebbe richiedere una capacità superiore ad N Un'applicazione potrebbe richiedere una capacità molto inferiore ad N Lo Stack lancia una StackFullException che arresta l'applicazione Spreco di memoria
29 La struttura dati coda (queue) Inserimento, cancellazione e ricerca avvengono solo in due posizioni inserimento e cancellazione avvengono secondo una strategia FIFO (first in first out): in inserimento: un nuovo oggetto viene inserito dietro la coda cancellazione: viene cancellato sempre l'oggetto davanti alla coda out viene cancellato sempre l'oggetto che è stato inserito per primo
30 Il tipo astratto di dati coda (queue) Tipo di dati e operazioni Dati: oggetti arbitrari Operazioni: - void enqueue (element): inserisce un nuovo elemento dietro (rear) la coda - element dequeue(): restituisce l'elemento in testa (front) alla coda (quello che è stato più a lungo in coda) e lo rimuove - element front(): restituisce l'elemento in testa alla coda - integer size(): restituisce il numero di elementi presenti in coda - boolean isempty(): è vero se e solo se non ci sono elementi in coda
31 Il tipo astratto di dati coda (queue) Un esempio Operazione enqueue(5) Output 5
32 Il tipo astratto di dati coda (queue) Un esempio Operazione Output enqueue(5) 8 5 enqueue(8)
33 Il tipo astratto di dati coda (queue) Un esempio 8 Operazione enqueue(5) enqueue(8) dequeue() Output 5
34 Il tipo astratto di dati coda (queue) Un esempio Operazione Output enqueue(5) 6 8 enqueue(8) dequeue() 5 enqueue(6)
35 Il tipo astratto di dati coda (queue) Un esempio 6 Operazione enqueue(5) enqueue(8) dequeue() enqueue(6) dequeue() Output 5 8
36 Il tipo astratto di dati coda (queue) Un esempio Operazione enqueue(5) enqueue(8) Output dequeue() enqueue(6) 5 dequeue() 8 dequeue() 6
37 Il tipo astratto di dati coda (queue) Un esempio Operazione enqueue(5) enqueue(8) Output dequeue() enqueue(6) 5 dequeue() 8 dequeue() 6 dequeue() error
38 Il tipo astratto di dati coda (queue) Le eccezioni Ricordare: una exception si verifica quando un'operazione non può essere eseguita. Ad esempio: - front() su una coda vuota - dequeue() su una coda vuota
39 Implementazione coda Una semplice soluzione con array front rear N-1 Come tenere traccia di front e rear della coda? - Q[0] contiene la testa della coda (front) - inseriamo gli oggetti da sinistra a destra - una variabile rear indica la prima cella libera
40 Implementazione coda Una semplice soluzione con array front rear N-1 Come tenere traccia di front e rear della coda? - Q[0] contiene la testa della coda (front) - inseriamo gli oggetti da sinistra a destra - una variabile rear indica la prima cella libera
41 Implementazione coda Una semplice soluzione con array front rear N-1 Come tenere traccia di front e rear della coda? - Q[0] contiene la testa della coda (front) - inseriamo gli oggetti da sinistra a destra - una variabile rear indica la prima cella libera
42 Implementazione coda Una semplice soluzione con array front rear N-1 Come tenere traccia di front e rear della coda? - Q[0] contiene la testa della coda (front) - inseriamo gli oggetti da sinistra a destra - una variabile rear indica la prima cella libera
43 Implementazione coda Una semplice soluzione con array front rear N-1 Come tenere traccia di front e rear della coda? - Q[0] contiene la testa della coda (front) - inseriamo gli oggetti da sinistra a destra - una variabile rear indica la prima cella libera
44 Implementazione coda Una semplice soluzione con array front rear N-1 Come tenere traccia di front e rear della coda? - Q[0] contiene la testa della coda (front) - inseriamo gli oggetti da sinistra a destra - una variabile rear indica la prima cella libera
45 Implementazione coda Una semplice soluzione con array front rear N-1 Come tenere traccia di front e rear della coda? - Q[0] contiene la testa della coda (front) - inseriamo gli oggetti da sinistra a destra - una variabile rear indica la prima cella libera Problema: come fare dequeue?
46 Implementazione coda Una semplice soluzione con array front rear N-1 Come tenere traccia di front e rear della coda? - Q[0] contiene la testa della coda (front) - inseriamo gli oggetti da sinistra a destra - una variabile rear indica la prima cella libera Questa soluzione non è efficiente perché in caso di dequeue si dovranno spostare tutti i rimanenti oggetti di una posizione a sinistra: ciò richiede complessità O(n), dove n è il numero di oggetti in coda
47 Implementazione coda Un'altra soluzione con array (più efficiente) Definiamo due variabili f e r : All'inizio f = r = 0 (la coda è vuota) f = r = N-1 - quando aggiungiamo un elemento, basterà incrementare r fino alla prossima cella disponibile - quando cancelliamo un elemento, basterà spostare f alla cella successiva
48 Implementazione coda Un'altra soluzione con array (più efficiente) f r N-1 - quando aggiungiamo un elemento, basterà incrementare r fino alla prossima cella disponibile - quando cancelliamo un elemento, basterà spostare f alla cella successiva
49 Implementazione coda Un'altra soluzione con array (più efficiente) f r N-1 - quando aggiungiamo un elemento, basterà incrementare r fino alla prossima cella disponibile - quando cancelliamo un elemento, basterà spostare f alla cella successiva
50 Implementazione coda Un'altra soluzione con array (più efficiente) f r N-1 - quando aggiungiamo un elemento, basterà incrementare r fino alla prossima cella disponibile - quando cancelliamo un elemento, basterà spostare f alla cella successiva
51 Implementazione coda Un'altra soluzione con array (più efficiente) f r N-1 - quando aggiungiamo un elemento, basterà incrementare r fino alla prossima cella disponibile - quando cancelliamo un elemento, basterà spostare f alla cella successiva
52 Implementazione coda Un'altra soluzione con array (più efficiente) f r N-1 - quando aggiungiamo un elemento, basterà incrementare r fino alla prossima cella disponibile - quando cancelliamo un elemento, basterà spostare f alla cella successiva
53 Implementazione coda Un'altra soluzione con array (più efficiente) Ora f = r (la coda è vuota) f = r N-1 - quando aggiungiamo un elemento, basterà incrementare r fino alla prossima cella disponibile - quando cancelliamo un elemento, basterà spostare f alla cella successiva
54 Implementazione coda Un'altra soluzione con array (più efficiente) In generale: N-1 se la coda è vuota: f = r se la coda non è vuota: - f è l'indice della cella che contiene il primo elemento della coda (front) - r è l'indice della cella dove verrà inserito il prossimo elemento della coda
55 Implementazione coda Un'altra soluzione con array (più efficiente) Inconveniente n. 1 Situazione dopo una serie di N enqueue e dequeue consecutive: f = r = N N-1 La coda è vuota ma lo spazio a disposizione sull'array è finito Se ora volessimo inserire un elemento nella coda, dovremmo incrementare r, ma ciò non è permesso perché r ha già raggiunto il limite massimo consentito dalla taglia dell'array
56 Implementazione coda Un'altra soluzione con array (più efficiente) Per evitare il problema f ed r possono essere incrementati "circolarmente" f = r = N N-1 Incremento di f: f = ( f + 1) mod N Incremento di r: r = ( r + 1) mod N quando f = r la coda è vuota
57 Implementazione coda Un'altra soluzione con array (più efficiente) Inconveniente n. 2 Situazione dopo una successione di N enqueue consecutive: f = r N-1 Questa condizione corrisponde alla situazione di coda vuota! Si può ovviare ponendo a N - 1 il limite massimo di oggetti che la coda può contenere
58 Implementazione coda con array Pseudocodice dei metodi f r N-1 r f N-1 Algorithm size(): return (N + r - f) mod N
59 Implementazione coda con array Pseudocodice dei metodi f r N-1 Algorithm isempty(): return (f = r)
60 Implementazione coda con array Pseudocodice dei metodi f r N-1 Algorithm front(): if isempty() then throw a EmptyQueueException return Q[f]
61 Implementazione coda con array Pseudocodice dei metodi f r N-1 Algorithm dequeue(): if isempty() then throw a EmptyQueueException temp := Q[f] Q[f] := null f := (f+1) mod N return temp
62 Implementazione coda con array Pseudocodice dei metodi f r N-1 Algorithm enqueue(element) if size() = N - 1 then throw a FullQueueException Q[r ] := element r := (r + 1) mod N
63 Implementazione coda con array Vantaggi e svantaggi Vantaggi Implemetazione semplice ed efficiente Memoria usata: O(N) Complessità dei metodi (size, isempty, front, enqueue, dequeue): O(1) Svantaggi Bisogna fissare a priori un limite superiore N alla massima taglia della coda
Liste 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
DettagliTipi di dati astratti
Tipi di dati astratti ADT 1 Dati strutturati e algoritmi Una struttura di dati è un insieme di regole per organizzare e manipolare dei dati Un algoritmo è un procedimento composto in passi elementari in
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 25 ADT (Abstract Data Types) tipo di dato astratto Un ADT è un modello matematico con una collezione di operatori definiti su tale
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 25 Le liste in C struct nodo { int info; struct nodo *next; }; typedef struct nodo Nodo; typedef Nodo *PNodo; Inserimento in ordine
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 33 Le liste in C struct nodo { int info; struct nodo *next; }; typedef struct nodo Nodo; typedef Nodo *PNodo; Pila (Stack ) La struttura
DettagliAlgoritmi e Strutture di Dati
Algoritmi e Strutture di Dati Capitolo 4 - Strutture di dati elementari This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit
DettagliSOMMARIO STACK. STACK: specifica STACK
SOMMARIO STACK Pila (stack): una struttura dati lineare a cui si può accedere soltanto mediante uno dei suoi capi per memorizzare e per estrarre dati. Specifica (descrizione). Implementazione (realizzazione).
DettagliListe. Costo operazioni Tutte le operazioni hanno costo O(1)
Liste Liste (List, Linked List) Una sequenza di nodi, contenenti dati arbitrari e 1-2 puntatori all'elemento successivo e/o precedente Contiguità nella lista contiguità nella memoria Costo operazioni Tutte
DettagliAlgoritmi e Programmazione Avanzata. Pile e code. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino
Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Sommario ADT Pile Code. A.A. 2001/2002 APA - 2 1 Sommario ADT Pile Code. A.A. 2001/2002 APA - 3 ADT Le regole che
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. Sommario. Algoritmi e Programmazione Avanzata. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino
Pile e code Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Sommario ADT Pile Code. A.A. 2002/2003 APA - Pile e code 2 Politecnico di Torino Pagina 1 di 23 Sommario
DettagliAlgoritmi e Strutture di Dati
Algoritmi e Strutture di Dati Tipi astratti di dato (pile e code realizzate tramite array) m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright
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
Dettaglitipi di dato astratti
tipi di dato astratti A. FERRARI ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere manipolate con modalità che dipendono esclusivamente dalla semantica
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
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
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
Dettaglialgoritmi e strutture di dati
algoritmi e strutture di dati tipi astratti di dato (pile, code, liste implementate tramite array) m.patrignani nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright
DettagliIl vettore e la lista concatenate (o catena) sono due esempi di strutture interne.
Strutture dati PILA e CODA Le strutture dati si dividono in interne e astratte. Quelle astratte sono rappresentazioni dei dati di un problema che rispecchiano le proprietà dei dati e le relazioni usate
DettagliIn questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi.
In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi. 1 strutture dati (astratte) Una struttura dati astratti consiste di uno o più insiemi con delle operazioni
DettagliAlgoritmi e strutture dati
Algoritmi e strutture dati Argomenti Strutture dati elementari e loro implementazioni in Java: Vettori Liste Stack (Pile) Queue (Code) Esempi di applicazione Tipo di dato astratto Tipo di dato astratto
DettagliEsercitazioni di Algoritmi e Strutture Dati
Esercitazioni di Algoritmi e Strutture Dati II esercitazione, 14/03/2016 Tong Liu 1 SOLUZIONE DEL COMPITO PRECEDENTE Definire e inizializzare un array di N numeri interi *distinti* (la scelta di N e degli
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
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
Dettagli10/10/2016. Caratteristiche degli array. Il tipo RECORD. Il record. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica
Caratteristiche degli array Principali caratteristiche degli array: LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli
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
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
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]
DettagliAlgoritmi e Strutture Dati
Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno Il concetto di dato Il concetto
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
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 04 Introduzione ai Tipi astratti di dato A. Miola Febbraio 2007 http://www.dia.uniroma3.it/~java/fondinf2/ Introduzione ADT 1
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
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
DettagliAlgoritmi e Strutture Dati
Strutture Elementari Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 29 ottobre 2008 Strutture Dati Astratte Il concetto di dato Il concetto
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
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'
DettagliTIPO DI DATO ASTRATTO
TIPO DI DATO ASTRATTO Tipo di dato astratto Esempio: Vogliamo rappresentare un sistema di prenotazione di esami universitari. Dati immagazzinati: prenotazioni esami Operazioni supportate: prenota(esame,
DettagliProgrammazione in Java Parte II
Programmazione in Java Parte II Lezione 7 Dott. Marco Faella Il Java Collection Framework Java Collection Framework (JCF) è una parte della libreria standard dedicata alle collezioni, intese come classi
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
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
DettagliAltro di ADT. Dominio. Funzioni. Dominio. Funzioni. Costanti - Collezioni
di astratto Abstract Data Type Paolo Bison Fondamenti di Informatica 1 A.A. 2004/05 Università di Padova definizione di un indipendente dalla sua rappresentazione interna e dalla effettiva implementazione
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
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
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
DettagliInformatica 3. LEZIONE 13: Liste doppie, pile e code. Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda
Informatica 3 LEZIONE 13: Liste doppie, pile e code Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Informatica 3 Lezione 13 - Modulo 1 Free list Free list Le funzioni di sistema
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
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
DettagliStrutture dati elementari. Vittorio Maniezzo - Università di Bologna
Strutture dati elementari 1 Vittorio Maniezzo - Università di Bologna Pile (Stacks) Dati: un insieme S di elementi. Operazioni: PUSH, POP PUSH: inserisce un elemento in S POP: restituisce l ultimo elemento
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
DettagliADT STACK (PILA) Svariate applicazioni del concetto di stack:
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
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
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
DettagliAlberi Binari Alberi Binari
Alberi Binari Alberi Binari Un albero binario è una collezione di elementi organizzati in modo non sequenziale secondo un grafo aciclico caratterizzato da Radice Due sotto-alberi (il sotto-albero destro
DettagliLaboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Prof. Aniello Murano Stack e Code Corso di Laurea Codice insegnamento Email docente Anno accademico Informatica 13917 murano@na.infn.it 2007/2008 Lezione numero:
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
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Strutture dati elementari Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy
DettagliProgrammazione II canale AD -- Esonero del 21/04/2006
Esercizio 1 (Sbarramento ) Si scriva una funzione ricorsiva che riceve in input una lista concatenata di interi L e restituisce una nuova lista concatenata di interi L1 in cui l elemento j-simo ( j 1)
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
DettagliStrutture dati elementari
Strutture dati elementari 1 Vittorio Maniezzo - Università di Bologna Pile (Stacks) Dati: un insieme S di elementi. Operazioni: PUSH, POP PUSH: inserisceun elementoin S POP: restituiscel ultimoelementoinseritoe
Dettaglitipi di dato astratti
tipi di dato astratti liste pile code alberi grafi Alberto Ferrari Informatica ADT o un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere manipolate con modalità
DettagliADT STACK (PILA) ADT STACK (PILA) IL COMPONENTE STACK (PILA) CONSIDERAZIONI. Per utilizzare istanze del tipo di dato astratto
ADT STACK (PILA) Collezione di elementi dello stesso tipo (multi-insieme) gestito con politica LIFO (Last-In -- First-Out): t) il primo elemento entrato è l ultimo a uscire Svariate applicazioni del concetto
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. Liste. Strutture ricorsive (2) Strutture ricorsive (1) DD p KP p
Introduzione Liste DD p. 449-474 KP p.397-424 Abbiamo fin ora studiato strutture dati con dimensione fissa: vettori e matrici strutture Introduciamo ora le strutture dati dinamiche (liste concatenate):
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,...
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):
Dettagli1 Strutture di dati dinamiche. 2 Vector come esempio di array dinamico
1 Strutture di dati dinamiche Le strutture dinamiche servono per memorizzare i dati dei quali non si sa a priori la loro dimensione. Ad esempio non sappiamo a priori quanti contatti avremo nella nostra
DettagliADT STACK (PILA) Svariate applicazioni del concetto di stack:
Stack e Code Obiettivi: Introdurre l ADT Stack e l ADT Coda e le operazioni tipiche su esse Discuterne la realizzazione sequenziale (mediante vettori) e la realizzazione collegata (puntatori a strutture)
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
DettagliIL COMPONENTE STACK (pila)
COMPONENTI SOFTWARE Diverse tipologie di componenti: Librerie semplici collezioni di procedure e funzioni.non fanno uso di variabili globali o statiche e non definiscono nuovi tipi (visibili all esterno)
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
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
DettagliProgrammare. Compilatori e interpreti. Editor :: vi. Hello1.c. #include <stdio.h> >> cc Hello1.c. main() { printf( \n Hello World!
Programmare Hello1.c #include printf( \n Hello World! \n ); >> cc Hello1.c >> a.out Hello World! >> Hello1.c = file sorgente per scriverlo occorre un editor cc = compilatore per altri linguaggi
DettagliAlgoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet
Algoritmi e Strutture di Dati I 1 Algoritmi e Strutture di Dati I Massimo Franceschet Algoritmi e Strutture di Dati I 2 Pila (stack) La struttura di dati pila rappresenta un insieme dinamico nel quale
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
DettagliEsercizio. Strutture Dati
Esercizio Si scriva un metodo public Position sibling(position v) che preso in input un nodo v restituisca il fratello di v. Il metodo dovrà lanciare una BoundaryViolationException nel caso in cui
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.
DettagliStrutture dati elementari
Strutture dati elementari Luciano Bononi e Moreno Marzolla Dip. di Scienze dell'informazione Università di Bologna bononi@cs.unibo.it marzolla@cs.unibo.it http://www.moreno.marzolla.name/ Original work
Dettagliheap concetti ed applicazioni
heap concetti ed applicazioni ADT coda di priorità operazioni getfirst restituisce l'elemento nella struttura con massima priorità deletefirst cancella l'elemento nella struttura con massima priorità insert
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
DettagliLaboratorio di Algoritmi
Laboratorio di Algoritmi Corso di Laurea in Matematica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Martedì 8.30-10.30 in aula 3 Mercoledì 10.30-12.30 in Aula 2 Giovedì 8.30-10.30 in
DettagliLinguaggi di Programmazione
Linguaggi di Programmazione Corso di Laurea in Informatica Astrarre sui dati Valeria Carofiglio (Questo materiale è una rivisitazione del materiale prodotto da Nicola Fanizzi) Obiettivi tipi di dato astratti
DettagliPrima prova in itinere di Informatica 3 IOL Prof.ssa Sara Comai A.A dicembre 2004
Prima prova in itinere di Informatica 3 IOL Prof.ssa Sara Comai A.A. 2004-2005 3 dicembre 2004 Esercizio 1 - sintassi Si descrivano i diagrammi sintattici oppure l'ebnf per descrivere semplici espressioni
DettagliHeap e Code di Priorità
Heap e Code di Priorità heap heap = catasta condizione di heap 1. albero binario perfettamente bilanciato 2. ogni nodo contiene una chiave maggiore o eguale di quelle presenti negli eventuali figli non
DettagliFondamenti di Informatica
Strutture dati complesse Esempi di strutture dati complesse analizzate in questa lezione: Fondamenti di Informatica 21. Strutture di dati complesse in C++ Array di puntatori Pila (Stack) Coda (queue) Liste
DettagliIn una coda gli inserimenti si fanno alla fine e le cancellazioni all inizio! First In First Out
In una coda gli inserimenti si fanno alla e e le cancellazioni all inizio! First In First Out Progr II - Coda 1 CODA: i requisiti Una coda (queue) è un ADT in cui le operazioni sono inserimenti e cancellazioni
DettagliLaboratorio di Algoritmi
Laboratorio di Algoritmi Corso di Laurea in Matematica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Martedì 8.30-10.30 in aula 3 Mercoledì 10.30-13.30 in aula 2 Giovedì 15.30-18.30 in
DettagliLaboratorio di Algoritmi
Laboratorio di Algoritmi Corso di Laurea in Matematica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Martedì 8.30-10.30 in aula 3 Mercoledì 10.30-13.30 in aula 2 Giovedì 15.30-18.30 in
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
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)
DettagliAssembly (3): le procedure
Architettura degli Elaboratori e delle Reti Lezione 13 Assembly (3): le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano (Patterson-Hennessy:
DettagliEsempio 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.
DettagliStrutture Dati Dinamiche. Monday, January 10, 2011
Strutture Dati Dinamiche 1 Che cos è una struttura dati Per struttura dati si intende comunemente la rappresentazione dei dati e le operazioni consentite su tali dati In linguaggi più evoluti del C esistono
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
DettagliLaboratorio di Informatica
Strutture di dati Laboratorio di Informatica 5. Strutture / Array di oggetti / Pila&Coda in C++ Una struttura è un insieme finito di variabili (dette campi) non necessariamente dello stesso tipo, ognuna
DettagliInsiemi Dinamici. Operazioni tipiche (S:struttura, x: riferimento(puntatore) alla chiave, k: chiave)
Insiemi Dinamici Insiemi che possono essere modificati Elementi: oggetti = eventualmente: chiavi + (eventuali) dati satellite; l insieme delle chiavi puo essere totalmente ordinato Operazioni tipiche (S:struttura,
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA7 B3 Gestione di una coda 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Tecnica di allocazione dinamica Concetto di coda e operazioni relative
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 Coda: Teoria
Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica Corso di Laurea in Ingegneria Informatica : Teoria La presente dispensa è stata prodotta dal Prof.S.Cavalieri, ed è ufficialmente adottata
Dettagli