Coda a doppio ingresso (Deque)

Documenti analoghi
Coda a doppio ingresso (Deque)

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

Il TDA List è la versione orientata agli oggetti della struttura dati lista. Una sequenza di nodi

List. Il TDA List. Interfaccia Position. Il TDA Position. Il TDA List 1. Ancora su Position

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

Laboratorio di Algoritmi e Strutture Dati Anno Accademico 2005/06 Prof. Carlo Blundo. Raccolta di esercizi Versione del 20 dicembre 2005

Laboratorio di Algoritmi e Strutture Dati Anno Accademico 2005/06 Prof. Carlo Blundo. Raccolta di esercizi Versione del 26 ottobre 2005

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

TDA Position (TDA List Sequence)

Alberi Binari Alberi Binari

Il TDA Map. Tabelle hash

Definizione informale. Il TDA Map memorizza coppie formate da una chiave k e da un valore v. La coppia è chiamata entry. Ogni chiave deve essere unica

Il TDA Map. Definizione informale. I metodi del TDA Map 2. I metodi del TDA Map 1. Interfaccia Map 1 NO_SUCH_KEY. Tabelle hash

E` un tipo astratto di dati che supporta tutti i metodi dell'adt Array list e dell'adt Lista di nodi più i seguenti:

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

SOMMARIO STACK. STACK: specifica STACK

Algoritmi e strutture dati

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

La struttura dati CODA

Tipi di dati astratti

tipi di dato astratti

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

Le liste. ADT e strutture dati per la rappresentazione di sequenze. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez. 5

TIPO DI DATO ASTRATTO

Alberi. In informatica, un albero è un modello astratto di una struttura dati gerarchica

Il TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3

Definizione informale

Definizione informale. Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche

Corso sul linguaggio Java

STRUTTURE DATI: OLTRE GLI ARRAY LISTE

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

Programmazione in Java Parte II

Il tipo astratto di dati Node List

Implementazione Java di un ADT

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

Laboratorio di Informatica

Fondamenti di Informatica

Fondamenti di Informatica II

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

lezione 5 Tipo di dato Lista Liste

Esercizio. Strutture Dati

Parte di laboratorio

Informatica 3. Informatica 3. LEZIONE 13: Liste doppie, pile e code. Lezione 13 - Modulo 1. Free list (2) Free list. Free list

Liste doppie. Doubly Linked Lists. GT: 6.2 (e 3.3) Argomenti della lezione

Informatica 3. LEZIONE 13: Liste doppie, pile e code. Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda

semplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente

Strutture dati dinamiche in C (II)

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

Metodi di una Collection

Albero in cui ogni nodo ha al più due figli. I figli di un nodo costituiscono una coppia ordinata

Liste concatenate. Violetta Lonati

Gerarchie e polimorfismo: liste

Capitolo 17. Introduzione alle strutture di dati. Capitolo 17 Introduzione alle strutture di dati

Esercizi proposti per il corso di Strutture Dati

Le liste con array. Rimuovere la perla rossa costringe a spostare molte altre perle. Dove mettere la perla verde se si è esaurito il filo?

PILE E CODE. Pile (stack):

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Laboratorio di Programmazione

Prima prova in itinere di Informatica 3 IOL Prof.ssa Sara Comai A.A dicembre 2004

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

Politecnico di Milano

semplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente

Parte 4D. Liste doppie. R. Magritte Transfer, D.1

Algoritmi e Strutture di Dati

Standard Template Library

LINKEDLIST: implementazione iteratore. LINKEDLIST: iteratore INNERITERATOR INNERITERATOR

Strutture Dinamiche. Strutture Dinamiche

Esercitazione: Implementazione in linguaggio C dell ADT. Stack con l utilizzo. di linked list

Pile e code. ADT e strutture dati per la rappresentazione di sequenze ad accesso LIFO e FIFO

Contenitori: Pile e Code

Laboratorio di Programmazione

Le liste. Le liste linkate

Laboratorio di Programmazione Lezione 3. Cristian Del Fabbro

Liste concatenate e allocazione dinamica

Laboratorio di Programmazione

Capitolo 14 Introduzione alle strutture di dati. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

COLLEZIONI. SOMMARIO Collezioni: Liste: ITERATORI ITERATORI

CORSO DI PROGRAMMAZIONE

IMPLEMENTAZIONE CONCATENATE DELLE LISTE

Pile e Code. Definiamo una collezione come un gruppo di oggetti, detti gli elementi della collezione.

Algoritmi e Strutture di Dati

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

In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi.

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

Algoritmi e Strutture Dati Laboratorio 20/10/2008. Prof. Pier Luca Lanzi

Strutture dati. Le liste

Lezione 15 programmazione in Java. Nicola Drago Dipartimento di Informatica Università di Verona

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Definizione. Un grafo è una coppia (V, E), dove

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

La struttura dati PILA

La Standard Template Library Heap, algoritmi e funtori

algoritmi e strutture di dati

Strutture Dinamiche. Fondamenti di Informatica

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

Algoritmi e Programmazione Avanzata. Pile e code. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino

Lezione XXIX Lu 26-Nov Lista Concatenata (LinkedList)

Algoritmi e Strutture Dati

lezione 9 min-heap binario Heap e Alberi posizionali generali

Catena (linked list) Catena. Catena vuota. Nodo di una catena. Catena. Fondamenti di Informatica 1 Settimana 7. Marcello Dalpasso 1

Transcript:

Coda a doppio ingresso (Deque) Definizione informale Una coda a doppio ingresso o Deque è un TDA simile alla Coda che supporta inserimenti e cancellazioni ad entrambe le estremità Deque si pronuncia deck per evitare confusioni con il metodo dequeue Prof. Carlo Blundo Laboratorio di Algoritmi e Strutture Dati 2 1

Operazioni sulla Deque 1 insertfirst(e,d) aggiunge e come primo in d insertlast(e,d) aggiunge e come ultimo in d removefirst(d) restituisce, eliminandolo, il primo elemento in d removelast(d) restituisce, eliminandolo, l ultimo primo elemento in d Prof. Carlo Blundo Laboratorio di Algoritmi e Strutture Dati 3 Operazioni sulla Deque 2 first(d) restituisce il primo elemento in d last(d) isempty(d) restituisce l ultimo elemento in d ritorna true se d non ha elementi; false altrimenti Prof. Carlo Blundo Laboratorio di Algoritmi e Strutture Dati 4 2

Interfaccia Deque 1 public interface Deque { public void insertfirst(object o); public void insertlast(object o); public Object removefirst() throws DequeEmptyException; public Object removelast() throws DequeEmptyException; Prof. Carlo Blundo Laboratorio di Algoritmi e Strutture Dati 5 Interfaccia Deque 2 public Object first() throws DequeEmptyException; public Object last() throws DequeEmptyException; public int size(); public bool isempty(); Prof. Carlo Blundo Laboratorio di Algoritmi e Strutture Dati 6 3

Lista doppiamente lincata Per implementare efficientemente il TDA Deque conviene utilizzare la struttura dati lista doppiamente lincata È come una lista lincata, ma ogni nodo memorizza anche un riferimento al nodo precedente (oltre a memorizzare un riferimento ad un elemento ed un riferimento al nodo successivo) Prof. Carlo Blundo Laboratorio di Algoritmi e Strutture Dati 7 Classe DLNode 1 class DLNode { private Object element; private DLNode next, prev; DLNode() { this(null, null, null); DLNode(Object e, DLNode p, DLNode n) { element = e; next = n; prev = p; Prof. Carlo Blundo Laboratorio di Algoritmi e Strutture Dati 8 4

Classe DLNode 2 void setelement(object newelem) { element = newelem; void setnext(dlnode newnext) { next = newnext; void setprev(dlnode newprev) { prev = newprev; Object getelement() { return element; DLNode getnext() { return next; DLNode getprev() { return prev; Prof. Carlo Blundo Laboratorio di Algoritmi e Strutture Dati 9 Nota Per migliorare sia l efficienza del codice sia per semplificare la programmazione conviene usare due nodi sentinella header È un nodo che punta alla testa (head) della Deque Ha il campo prev settato a null trailer È un nodo che punta alla coda (tail) della Deque Ha il campo next settato a null Prof. Carlo Blundo Laboratorio di Algoritmi e Strutture Dati 10 5

Esempio header next prev element Avellino Napoli Prof. Carlo Blundo Laboratorio di Algoritmi e Strutture Dati 11 Esercizio Implementare l interfaccia Deque (scrivere la classe DLinkedDeque) usando una lista doppiamente lincata public class DLinkedDeque implements Deque { DLNode header, trailer; //sentinelle int size; //numero di elementi nella deque... Prof. Carlo Blundo Laboratorio di Algoritmi e Strutture Dati 12 6

Costruttore di DLinkedDeque public DLinkedDeque() { // inizializza una Deque vuota header = new DLNode(); trailer = new DLNode(); header.setnext(trailer); // fa puntare l header // al trailer trailer.setprev(header); // fa puntare il trailer // all header size = 0; Prof. Carlo Blundo Laboratorio di Algoritmi e Strutture Dati 13 Metodo insertfirst public void insertfirst(object o) { DLNode secondo = header.getnext(); DLNode primo = new DLNode(o, header, secondo); secondo.setprev(primo); header.setnext(primo); size++; Prof. Carlo Blundo Laboratorio di Algoritmi e Strutture Dati 14 7

Esempio header secondo next prev Avellino Napoli o primo Prof. Carlo Blundo Laboratorio di Algoritmi e Strutture Dati 15 Esempio header secondo next prev Avellino Napoli o primo Prof. Carlo Blundo Laboratorio di Algoritmi e Strutture Dati 16 8

Esercizi Implementare il TDA Stack usando una coda a doppio ingresso Cambia la complessità di tempo dei vari metodi? In caso affermativo, indicare come. Implementare il TDA Queue usando una coda a doppio ingresso Cambia la complessità di tempo dei vari metodi? In caso affermativo, indicare come. Prof. Carlo Blundo Laboratorio di Algoritmi e Strutture Dati 17 9