Algoritmi e Strutture di Dati

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Algoritmi e Strutture di Dati"

Transcript

1 Agoritmi e Strutture di Dati Impementazioni di iste con oggetti e riferimenti m.patrignani Nota di copyright queste sides sono protette dae eggi su copyright i titoo ed i copyright reativi ae sides (incusi, ma non imitatamente, immagini, foto, animazioni, video, audio, musica e testo) sono di proprietà degi autori indicati sua prima pagina e sides possono essere riprodotte ed utiizzate iberamente, non a fini di ucro, da università e scuoe pubbiche e da istituti pubbici di ricerca ogni atro uso o riproduzione è vietata, se non espicitamente autorizzata per iscritto, a priori, da parte degi autori gi autori non si assumono nessuna responsabiità per i contenuto dee sides, che sono comunque soggette a cambiamento questa nota di copyright non deve essere mai rimossa e deve essere riportata anche in casi di uso parziae 1

2 Strutture di dati con oggetti e riferimenti acuni inguaggi supportano oggetti e riferimenti o pseudocodice è uno di questi con oggetti e riferimenti si possono reaizzare strutture di dati eementari in modo più naturae vedremo a reaizzazione de tipo astratto di dato ista pie e code possono essere rivisti come casi particoari di iste due principai varianti impementative: ista singoarmente concatenata ista doppiamente concatenata NEW_LIST() Operazioni su una ista di interi ritorna i riferimento ad una ista vuota HEAD() LAST() NEXT(,i) PREV(,i) INSERT(,n) INSERT_BEFORE(,n,i) ADD(,n) ADD_AFTER(,n,i) DELETE(,i) DELETE(,n) EMPTY() SEARCH(,n) IS_EMPTY() ritorna iteratore de primo eemento dea ista ritorna iteratore de utimo eemento dea ista ritorna iteratore de eemento che segue i nea ista ritorna un iteratore invaido se i è utimo eemento ritorna interatore de eemento che precede i nea ista ritorna un iteratore invaido se i è i primo eemento inserisce eemento n in testa aa ista inserisce eemento n prima dea posizione i aggiunge n in coda aa ista aggiunge eemento n dopo a posizione i rimuove eemento in posizione i daa ista rimuove eemento n daa ista vuota a ista ritorna iteratore de eemento n nea ista ritorna true se a ista è vuota, atrimenti ritorna fase 2

3 Lista concatenata (singy inked ist) iteratore i è un riferimento ad un nodo dea ista, che è un oggetto composto dai seguenti attributi i.info eemento in ista de tipo opportuno può essere un riferimento ad un oggetto esterno con dati sateite i.next riferimento a nodo seguente o NULL una ista ha un soo attributo.head riferimento a primo nodo i.info i.next.head Lista concatenata: ista vuota Quando a ista è vuota.head è NULL.head Pseudocodice dee procedure IS_EMPTY e EMPTY IS_EMPTY() 1. return.head == NULL EMPTY() 1..head = NULL o pseudocodice non deaoca memoria 3

4 Lista concatenata: first e next FIRST: iteratore de eemento affiorante.head FIRST() 1. return.head potrebbe essere NULL NEXT: prossimo eemento i.head NEXT(,i) 1. return i.next i parametro non è utiizzato Reaizzazione di funzioni eementari La sempicità di acune funzioni (come IS_EMPTY, EMPTY, FIRST, NEXT, ecc) induce a sostituire con e istruzioni opportune direttamente neo pseudocodice questo ovviamente fa perdere di generaità a codice scritto Esempio... if!is-empty() then x = NEXT(,x) if.head!= NULL then x = x.next... 4

5 Lista concatenata: inserimento in testa INSERT: inserimento di n in testa aa ista x.head n n.head INSERT(,n) n è un intero 1. x.info = n x è un nuovo oggetto con due campi: 2. x.info (intero) 3. x.next (rif. ad anaogo oggetto) 4. x.next =.head 5..head = x Lista concatenata: canceazione DELETE_FIRST: rimozione de primo nodo.head.head DELETE_FIRST() 1. NOTA: o pseudocodice non deaoca eemento 2. if.head == NULL 3. error( ista vuota ) 4. ese 5..head =.head.next 5

6 Esercizi: iste singoarmente concatenate Esercizi suo scorrimento dee iste 1. Scrivi o pseudocodice dea procedura MASSIMO() che ritorna i vaore de massimo eemento contenuto in una ista singoarmente concatenata di interi 2. Scrivi o pseudocodice dea procedura SOMMA() che ritorna a somma degi eementi contenuti in una ista singoarmente concatenata di interi Lista concatenata: canceazione DELETE(,i): canceazione de nodo i La canceazione di un nodo diverso da primo è poco efficiente in una ista singoarmente concatenata i.head.head Occorre infatti modificare attributo next de nodo che o precede 6

7 Esercizi: iste singoarmente concatenate 3. Scrivi o pseudocodice dea procedura SEARCH(,u) che ritorna i riferimento a eemento i che contiene i vaore intero u in una ista singoarmente concatenata di interi (oppure NULL se u non è nea ista) discuti a compessità de agoritmo in funzione de numero n degi eementi in ista 4. Scrivi o pseudocodice dea procedura PREV(,i) che ritorna i riferimento a eemento che precede eemento i in una ista singoarmente concatenata di interi (oppure NULL se i è i primo eemento dea ista) Esercizi: iste singoarmente concatenate 5. Scrivi o pseudocodice de operazione DELETE(,i) che cancea i nodo i di in una ista singoarmente concatenata discuti dea compessità de agoritmo 6. Scrivi o pseudocodice de operazione DELETE(,u) che cancea i nodo che contiene i vaore intero u in una ista singoarmente concatenata di interi discuti dea compessità de agoritmo 7

8 Esercizi: iste singoarmente concatenate 7. Impementa una pia di interi utiizzando oggetti e riferimenti devi reaizzare e funzioni NEW_STACK(), IS_EMPTY(p), PUSH(p,u), e POP(p) facendo uso di oggetti e riferimenti 8. Impementa una coda di interi utiizzando oggetti e riferimenti devi reaizzare e funzioni NEW_QUEUE(), IS_EMPTY(c), ENQUEUE(c,u), e DEQUEUE(c) facendo uso di oggetti e riferimenti Esercizi: iste singoarmente concatenate 9. Scrivi o pseudocodice dea procedura COMUNI( 1, 2 ) che ritorna i numero di eementi dea ista 1 che sono anche contenuti nea ista 2 discuti a compessità de agoritmo proposto 10. Scrivi o pseudocodice dea procedura non ricorsiva INVERSA() che ritorna una nuova ista singoarmente concatenata in cui gi eementi sono in ordine inverso 11. Scrivi o pseudocodice dea precedura ACCODA( 1, 2 ) che accoda gi eementi dea ista 2 aa ista 1 mantenendo ordine reativo che gi eementi avevano nee iste originarie puoi supporre di poter modificare e iste in input 8

9 Lista doppiamente concatenata Otre a attributo next i nodi dispongono anche de attributo prev.head Tavota a ista dispone anche di un attributo.tai.head.tai Inserimento nea ista INSERT(,n): inserimento in testa aa ista.head x n.head x n 9

10 Inserimento nea ista INSERT(,n): inserimento in testa aa ista INSERT(,n) 1. x è un nuovo oggetto con tre campi: 2. x.info (intero) 3. x.prev, x.next (riferimenti ad oggetti anaoghi) 4. x.info = n 5. x.next =.head 6. x.prev = NULL 7. if.head!= NULL 8..head.prev = x 9..head = x Canceazione di un eemento i.head.head DELETE(,i) 1. if i.prev!= NULL 2. i.prev.next = i.next 3. ese 4..head = i.next 5. if i.next!= NULL 6. i.next.prev = i.prev 10

11 Esercizi su iste doppiamente concatenate 12. Scrivi o pseudocodice de operazione INSERT_BEFORE(,n,i) che riceva come parametri una ista doppiamente concatenata, un intero n ed un iteratore i, e inserisca n nea ista prima de eemento riferito da i discuti a compessità dea procedura 13. Scrivi o pseudocodice de operazione ADD_AFTER(,n,i) che riceva come parametri una ista doppiamente concatenata, un intero n ed un iteratore i, e inserisca n nea ista dopo eemento riferito da i discuti a compessità dea procedura Esercizi su iste doppiamente concatenate 14. Impementa una coda utiizzando una ista doppiamente concatenata è possibie che e operazioni ENQUEUE e DEQUEUE abbiano entrambe compessità Θ(1)? come si potrebbe fare per ottenere questo risutato? 15. Scrivi o pseudocodice dea procedura DELETE(,u) che rimuova eemento che ha vaore u da una ista doppiamente concatenata di interi discuti a compessità de agoritmo 11

12 Esercizi su iste doppiamente concatenate 16. Scrivi o pseudocodice dea procedura INSERT_ORDERED(,u) che inserisca nea ista (che si suppone ordinata in senso crescente) un intero u mantenendo ordinamento crescente dea ista 17. Scrivi o pseudocodice dea procedura MERGE( 1, 2 ) che accetti come parametri due iste doppiamente concatenate di interi ordinate in senso crescente e restituisca una ista ordinata in senso crescente con gi eementi di entrambe puoi supporre che tutti gi eementi dee iste siano diversi Esercizi sue iste ordinate 18. Scrivi o pseudocodice dea procedura DOPPIONI() che verifichi che una ista (non ordinata) doppiamente concatenata di interi non abbia doppioni 19. Scrivi o pseudocodice dea procedura DOPPIONI_SORTED() che verifichi che una ista doppiamente concatenata di interi ordinata in senso non-decrescente non abbia doppioni 12

13 Liste con sentinee Le iste reaizzate con oggetti e puntatori offrono opportunità di introdurre speciai iteratori chiamati sentinee I primo iteratore dea ista (a sentinea ) è sempre presente e non ha nessun eemento associato L interatore non vaido coincide con interatore che identifica a sentinea La struttura dati è circoare Liste con sentinee Daa ista si accede direttamente (ed escusivamente) a iteratore non-vaido, cioè aa sentinea ista L NULL PREV S NEXT PREV I INFO NEXT PREV I INFO NEXT eementi E E 13

14 Uso dea sentinea Concatenando NULL+NEXT si ottiene FIRST Concatenando NULL+PREV si ottiene LAST Questa strategia comporta diversi atri vantaggi mote procedure risutaranno sempificate ista L LAST FIRST PREV S NEXT PREV I INFO NEXT PREV I INFO NEXT eementi E E Reaizzazione dea sentinea La sentinea è un nodo fittizio introdotto in testa aa ista.nu La ista vuota contiene soamente a sentinea.nu 14

15 Procedure nee iste con sentinee Esempi di procedura sempificata da uso di sentinee ista doppiamente concatenata (senza sentinea) DELETE(,i) versione senza sentinea (i!= NULL) 1. if i.prev!= NULL 2. i.prev.next = i.next 3. ese 4..head = i.next 5. if i.next!= NULL 6. i.next.prev = i.prev ista doppiamente concatenata con sentinea DELETE(,i) versione con sentinea (i!=.nu) 1. i.prev.next = i.next 2. i.next.prev = i.prev Esercizi sue iste con sentinee 20. Scrivi o pseudocodice dea procedura INSERT(,n) che inserisce in testa ad una ista con sentinea un intero n 21. Scrivi o pseudocodice dea procedura SEARCH(,n) che ritorna un iteratore a eemento dea ista con sentinea che ha vaore n SEARCH(,n) ritorna.nu se n non è presente nea ista 15

algoritmi e strutture di dati

algoritmi e strutture di dati agoritmi e strutture di dati impementazioni di iste con oggetti e riferimenti m.patrignani nota di copyright queste sides sono protette dae eggi su copyright i titoo ed i copyright reativi ae sides (incusi,

Dettagli

Algoritmi e Strutture di Dati

Algoritmi 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

Dettagli

algoritmi e strutture di dati

algoritmi 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

Dettagli

Liste Doppiamente Collegate

Liste Doppiamente Collegate Liste Doppiamente Coegate Consideriamo una ista sempicemente coegata Testa dea ista 3, 5, 20 Aggiungiamo ad ogni eemento un puntatore a eemento precedente Chiudiamo, in modo circoare, a ista (da notare

Dettagli

Dispense su Insiemi Dinamici e Liste Concatenate

Dispense su Insiemi Dinamici e Liste Concatenate Capitoo: Paragrafo: Introduzione Dispense su Insiemi Dinamici e Liste Concatenate C. Sansone, M. Vento Insiemi dinamici...2 Introduzione...2 Le Liste Concatenate...3 Introduzione...3 Inserimento in una

Dettagli

Algoritmi e Strutture di Dati

Algoritmi e Strutture di Dati Algoritmi e Strutture di Dati Pseudocodifica m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente,

Dettagli

Liste. Marco Alberti Programmazione e Laboratorio, A.A

Liste. Marco Alberti Programmazione e Laboratorio, A.A Liste Marco Aberti Programmazione e Laboratorio, A.A. 016-017 Diartimento di Matematica e Informatica - Università di Ferrara Utima modifica: 16 dicembre 016 Lista Raresenta una sequenza di entità deo

Dettagli

Algoritmi e Strutture di Dati

Algoritmi e Strutture di Dati Algoritmi e Strutture di Dati Alberi radicati m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente,

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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]

Dettagli

Algoritmi e Strutture di Dati

Algoritmi e Strutture di Dati Algoritmi e Strutture di Dati Code di priorità (Heap e heap_sort) m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi,

Dettagli

La struttura dati CODA

La struttura dati CODA Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati CODA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una coda (o queue) è una struttura dati astratta

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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

Dettagli

Algoritmi e Strutture di Dati

Algoritmi e Strutture di Dati Algoritmi e Strutture di Dati Visite di alberi m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente,

Dettagli

Pile 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 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

Dettagli

tipi di dato astratti

tipi 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

Dettagli

Insiemi Dinamici. Operazioni tipiche (S:struttura, x: riferimento(puntatore) alla chiave, k: chiave)

Insiemi 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,

Dettagli

LINKEDLIST: implementazione iteratore. LINKEDLIST: iteratore INNERITERATOR INNERITERATOR

LINKEDLIST: implementazione iteratore. LINKEDLIST: iteratore INNERITERATOR INNERITERATOR LINKEDLIST: iteratore Il metodo iterator() restituisce un oggetto iteratore sulla lista per scandire gli elementi in sequenza a partire dall inizio della lista. public Iterator iterator() { return new

Dettagli

Fondamenti di Informatica II

Fondamenti 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

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati I probema Laboratorio di Agoritmi e Strutture Dati Docente: V. Lonati Progetto Percorsi vaido per gi appei di giugno e ugio 2016 Obiettivo de progetto è o studio di percorsi tra punti de piano. I piano

Dettagli

Inserimento in una lista ordinata

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

Dettagli

Programmazione I - Laboratorio

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

Dettagli

Programmazione II canale AD -- Esonero del 21/04/2006

Programmazione 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)

Dettagli

Strutture dati elementari. Vittorio Maniezzo - Università di Bologna

Strutture 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

Dettagli

Linked Lists. Liste linkate (1) Progettazione: struct. Liste linkate (2)

Linked Lists. Liste linkate (1) Progettazione: struct. Liste linkate (2) Liste linkate () Linked Lists 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

Dettagli

Algoritmi e Strutture di Dati

Algoritmi e Strutture di Dati Algoritmi e Strutture di Dati Definizioni di base m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente,

Dettagli

Esercitazione: 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 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

Dettagli

Linked Lists. Liste linkate (1) liste linkate ( stack, queues ), trees. Liste linkate come strutture

Linked 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

Dettagli

Strutture dati elementari

Strutture 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

Dettagli

Problemi di ordinamento

Problemi di ordinamento Problemi di ordinamento Input: una sequenza di n numeri a 1, a 2,..., a n ; Output: una permutazione a 1, a 2,..., a n di a 1, a 2,..., a n tale che a 1 a 2... a n. Generalmente, la sequenza è rappresentata

Dettagli

Algoritmi 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  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

Dettagli

Algoritmi e strutture dati

Algoritmi 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

Dettagli

In 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. 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

Dettagli

Liste concatenate. Violetta Lonati

Liste concatenate. Violetta Lonati Liste concatenate Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 2 novembre 2017 Violetta Lonati Liste

Dettagli

Tipi di dato e Strutture dati elementari

Tipi 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

Dettagli

Algoritmi e Strutture di Dati

Algoritmi 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

Dettagli

Liste concatenate. Collezione ordinata di nodi. Carlo Paolo Simona. Anna. ciascun nodo contiene due riferimenti:

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

Dettagli

Argomenti della lezione. Tipo di dato astratto. Array. Tipo di dato Lista. Liste Implementazione di liste in Java Stack Code

Argomenti 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

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E14 F. Gasparetti, C. Limongelli Maggio 2012 1 Verifica presenza di elementi comuni V1 - Date due liste di stringhe scrivere

Dettagli

Orario delle lezioni LABORATORIO TEORIA. mercoledì. martedì aula P/4. lab Turing. Strutture Dati

Orario delle lezioni LABORATORIO TEORIA. mercoledì. martedì aula P/4. lab Turing. Strutture Dati Orario delle lezioni LABORATORIO martedì 15.00-18.00 TEORIA mercoledì 16.00 18.00 lab Turing aula P/4 Libro di testo Data Structures & Algorithms in Java Michael T. Goodrich Roberto Tamassia John Wiley

Dettagli

TIPO DI DATO ASTRATTO

TIPO 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,

Dettagli

Esercizi su strutture dati

Esercizi su strutture dati Esercizi su strutture dati Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 21 dicembre 2016 Liste collegate

Dettagli

IMPLEMENTAZIONE CONCATENATE DELLE LISTE

IMPLEMENTAZIONE CONCATENATE DELLE LISTE IMPLEMENTAZIONE CONCATENATE DELLE LISTE Liste collegate Come già visto, la realizzazione sequenziale prevede che la sequenzialità degli elementi della lista venga rappresentata dalla adiacenza delle locazioni

Dettagli

Introduzione. Liste. Strutture ricorsive (2) Strutture ricorsive (1) DD p KP p

Introduzione. 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):

Dettagli

Liste. Costo operazioni Tutte le operazioni hanno costo O(1)

Liste. 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

Dettagli

Esercitazioni di Algoritmi e Strutture Dati

Esercitazioni 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

Dettagli

Contenitori: Pile e Code

Contenitori: 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

Dettagli

algoritmi e strutture di dati

algoritmi e strutture di dati algoritmi e strutture di dati alberi radicati m.patrignani nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente,

Dettagli

algoritmi e strutture di dati

algoritmi e strutture di dati algoritmi e strutture di dati hashing m.patrignani nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente,

Dettagli

Alberi Binari Alberi Binari

Alberi 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

Dettagli

Laboratorio di Programmazione

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

Dettagli

Inserimento di un elemento in coda. quale va collegato quello nuovo. ultimo. *lista 8 3. aux. ultimo. *lista 8 3. aux

Inserimento di un elemento in coda. quale va collegato quello nuovo. ultimo. *lista 8 3. aux. ultimo. *lista 8 3. aux Inserimento di un elemento in coda Se la è vuota coincide con l inserimento in testa = è necessario il passaggio per indirizzo! Se la non è vuota, bisogna scandirla fino in fondo = dobbiamo usare un puntatore

Dettagli

Algoritmi e Strutture di Dati

Algoritmi e Strutture di Dati Algoritmi e Strutture di Dati Tabelle Hash m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente,

Dettagli

algoritmi e strutture di dati

algoritmi e strutture di dati algoritmi e strutture di dati definizioni di base m.patrignani nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente,

Dettagli

Questa soluzione va contemplata quando le lunghezze stimate dalle liste usate sono significativamente maggiori delle dimensioni di un elemento.

Questa 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

Dettagli

Algoritmi e Strutture di Dati A.A Esempio di prova scritta del 19 gennaio 2018 D.M CFU Libri e appunti chiusi Tempo = 2:00h

Algoritmi e Strutture di Dati A.A Esempio di prova scritta del 19 gennaio 2018 D.M CFU Libri e appunti chiusi Tempo = 2:00h Algoritmi e Strutture di Dati A.A. 2017-2018 Esempio di prova scritta del 19 gennaio 2018 D.M. 270-9CFU Libri e appunti chiusi Tempo = 2:00h Note (es: correzione veloce, eventuali indisponibilità, ecc.)...

Dettagli

Tipo di Dato. Abstract Data Types. Tipi di Dato Astratti /2. Tipi di Dato Astratti /1

Tipo 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

Dettagli

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

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

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E16 Esercizi Strutture Collegate e Oggetti C. Limongelli Maggio 2012 1 Contenuti q Verifiche universali ed esistenziali su strutture

Dettagli

Laboratorio di Informatica

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

Dettagli

Introduzione agli Algoritmi ed alle Strutture Dati Anno Accademico 2015/2016 Appello 23/6/2016

Introduzione agli Algoritmi ed alle Strutture Dati Anno Accademico 2015/2016 Appello 23/6/2016 1. Indicare quali delle seguenti affermazioni sono vere e quali sono false. a. n 3 = Θ (n 3log n ) b. n! = Ω(n n ) c. log n = Θ (log( n 2 )) d. n 3 =Ω(n) e. 9 log 3 n = Θ (n) 2. Si dimostri in modo formale

Dettagli

Previously on TDP. LISTA rappresentata mediante "struct e puntatori" Cosa e aux? Di che tipo e e cosa contiene?

Previously on TDP. LISTA rappresentata mediante struct e puntatori Cosa e aux? Di che tipo e e cosa contiene? Previously on TDP lis ^ ^ 7 21 ** ** 14 *** memoria 9 NULL LISTA rappresentata mediante "struct e puntatori" *** lis->info == cosa? lis->next == ^^; /*cosa e ^^?*/ che cosa e' (*lis)? Cosa e aux? Di che

Dettagli

Gestire l'invarianza: Il ruolo degli enti locali e dei tecnici - l'impatto sulle pratiche edilizie. FABIO VALSECCHI Provincia di Lecco

Gestire l'invarianza: Il ruolo degli enti locali e dei tecnici - l'impatto sulle pratiche edilizie. FABIO VALSECCHI Provincia di Lecco Gestire 'invarianza: I ruoo degi enti ocai e dei tecnici - 'impatto sue pratiche ediizie FABIO VALSECCHI Provincia di Lecco Fare cic su'icona per DOVE SIAMO ORA a che punto siamo.???? AMBITI TERRITORIALI

Dettagli

Le 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. 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

Dettagli

E12 Esercizi su Strutture dati dinamiche in C

E12 Esercizi su Strutture dati dinamiche in C E12 Esercizi su Strutture dati dinamiche in C Esercizio 1. Si vuole realizzare una lista caratteri in C utilizzando una rappresentazione semplicemente collegata. Scrivere una struttura nodo che contiene

Dettagli

10/10/2016. Caratteristiche degli array. Il tipo RECORD. Il record. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica

10/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

Dettagli

Fondamenti di Informatica

Fondamenti 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

Dettagli

Laboratorio di Programmazione

Laboratorio 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

Dettagli

Strutture dati. Le liste

Strutture 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

Dettagli

Linguistica Computazionale. 30 novembre 2016

Linguistica Computazionale. 30 novembre 2016 Linguistica Computazionae 30 novembre 2016 Part-of-Speech Tagging Feature utiizzate: feature ocai: forma, unghezza de token, presenza di punteggiatura a interno de token (es. Acronimi C.N.R.), prefisso,

Dettagli

La statistica descrittiva

La statistica descrittiva MATEMATICAperTUTTI Dee seguenti indagine statistiche individua a popoazione, i carattere oggetto di studio e e possibii modaità di tae carattere. 1 ESERCIZIO SVOLTO Indagine: utiizzo de tempo ibero da

Dettagli

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1 Fondamenti di Informatica T-1 Interfaccia Comparable e Collezioni Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De Filippo 1 / 22 Interfaccia

Dettagli

Programmazione 2. Liste Doppiamente Lincate. Prof. Sebastiano Battiato Prof.ssa Rosalba Giugno

Programmazione 2. Liste Doppiamente Lincate. Prof. Sebastiano Battiato Prof.ssa Rosalba Giugno Programmazione 2 Liste Doppiamente Lincate Prof. Sebastiano Battiato Prof.ssa Rosalba Giugno .. Liste doppiamente linkate Le liste linkate semplici consentono di scorrere gli elementi soltanto in una direzione,

Dettagli

Le liste. Prof. Francesco Accarino IIS Sesto San Giovanni Via Leopardi 132

Le liste. Prof. Francesco Accarino IIS Sesto San Giovanni Via Leopardi 132 Le liste Prof. Francesco Accarino IIS Sesto San Giovanni Via Leopardi 132 Le Liste Le liste non sequenziali (concatenate) sono costituite da elementi che vengono memorizzati in memoria centrale non uno

Dettagli

Strutture Dinamiche. Strutture Dinamiche

Strutture Dinamiche. Strutture Dinamiche Corso di Informatica A Vito Perrone 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato)); Crea in memoria una variabile

Dettagli

Predittori ad albero

Predittori ad albero (F94 Metodi statistici per apprendimento Predittori ad abero Docente: icoò Cesa-Bianchi versione 7 maggio 2018 Come accennato nea ezione introduttiva, mentre acuni tipi di dati (come immagini e documenti

Dettagli

Metodi di una Collection

Metodi 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

Dettagli

Code a priorità Una coda a priorità è una struttura dati astratta che permette di rappresentare un insieme di elementi su cui è definita una

Code a priorità Una coda a priorità è una struttura dati astratta che permette di rappresentare un insieme di elementi su cui è definita una Code a priorità Una coda a priorità è una struttura dati astratta che permette di rappresentare un insieme di elementi su cui è definita una relazione d ordine. Sono definite almeno le seguenti operazioni:

Dettagli

La programmazione nel linguaggio C

La programmazione nel linguaggio C Cancellazione : versione ricorsiva Sfruttiamo la visione ricorsiva della struttura dati per realizzare la cancellazione in modo ricorsivo 1. la cancellazione della vuota non richiede alcuna azione 2. la

Dettagli

Struct e liste concatenate

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

Dettagli

Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini

Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica

Dettagli

La struttura dati LISTA

La 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

Dettagli

Strutture dati dinamiche in C (II)

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

Dettagli

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,

Dettagli

In 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 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

Dettagli

CAPITOLO 3 - LA MANIPOLAZIONE DI LISTE E CODE

CAPITOLO 3 - LA MANIPOLAZIONE DI LISTE E CODE Capitolo 3 CAPITOLO 3 - LA MANIPOLAZIONE DI LISTE E CODE L elaborazione di liste concatenate è fondamentale in un sistema operativo - sembra pervadere ogni componente Questo capitolo introduce un insieme

Dettagli

Sommario. Le strutture dati elementari per implementare sequenze: Vettori Liste

Sommario. 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

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Fondamenti 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

Dettagli

Implementazione della coda con liste concatenate. x v. il front della coda è memorizzato nel primo nodo (head) della lista

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

Dettagli

Esercizio. Strutture Dati

Esercizio. 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

Dettagli

PROGRAMMAZIONE II canale A-D luglio 2008 TRACCIA DI SOLUZIONE

PROGRAMMAZIONE II canale A-D luglio 2008 TRACCIA DI SOLUZIONE PROGRAMMAZIONE II canale A-D 2007-2008 14 luglio 2008 TRACCIA DI SOLUZIONE 1. Si vogliono realizzare mediante puntatori delle liste circolari, cioè delle liste tali che l ultimo elemento della lista punta

Dettagli

Esercizi Liste. Prof. Alessandro Campi

Esercizi Liste. Prof. Alessandro Campi Esercizi Liste Prof. Alessandro Campi Esercizio Si consideri una lista dinamica di interi, i cui elementi sono del tipo definito come di seguito riportato: typedef struct El { int dato; struct El *next;

Dettagli