TAD Deque ATAI 1 ADT Deque n n
- Slides: 18
TAD Deque ATAI 1
ADT Deque n n Uma extensão da estrutura de dados fila que suporta inserções e remoções no início e no final da fila é chamada de fila de duas cabeças (double-ended queue ou deque) O ADT deque D suporta os seguintes métodos fundamentais: q insere. Primeiro(e): Insere um novo elemento e no início de D Entrada: Objecto; Saída: Nenhuma q q q insere. Ultimo(e): Insere um novo elemento e no final de D Entrada: Objecto; Saída: Nenhuma remove. Primeiro(): Remove e retorna o primeiro elemento de D Entrada: Nenhuma; Saída: Objecto remove. Ultimo(): Remove e retorna o último elemento de D Entrada: Nenhuma; Saída: Objecto 2
ADT Deque Adicionalmente temos os seguintes métodos de suporte: n primeiro(): Retorna o primeiro elemento de D Entrada: Nenhuma; Saída: Objecto n ultimo(): Retorna o último elemento de D Entrada: Nenhuma; Saída: Objecto n tamanho(): Retorna o número de elementos de D Entrada: Nenhuma; Saída: Inteiro n esta. Vazia(): Determina se D está vazia Entrada: Nenhuma; Saída: Booleano 3
Exemplo de execução numa deque Operação Saída D insere. Primeiro(3) - (3) insere. Primeiro(5) - (5, 3) remove. Primeiro( ) 5 (3) insere. Ultimo(7) - (3, 7) remove. Primeiro( ) 3 (7) remove. Ultimo( ) 7 () remove. Primeiro( ) "erro" () esta. Vazia( ) verdade () insere. Primeiro(9) - (9) insere. Ultimo(7) - (9, 7) tamanho( ) 2 (9, 7) insere. Primeiro(3) - (3, 9, 7) insere. Ultimo(5) - (3, 9, 7, 5) remove. Ultimo( ) 5 (3, 9, 7) 4
Interface Deque public interface Deque { int tamanho(); boolean esta. Vazia(); void insere. Primeiro(Object novo) throws Deque. Cheio. Exception; void insere. Ultimo(Object novo) throws Deque. Cheio. Exception; Object remove. Ultimo() throws Deque. Vazio. Exception; Object remove. Primeiro() throws Deque. Vazio. Exception; Object ultimo() throws Deque. Vazio. Exception; Object primeiro() throws Deque. Vazio. Exception; } 5
Lista duplamente ligada class DLNode { private Object element; private DLNode next, prev; DLNode() { this(null, null); } DLNode(Object e, DLNode p, DLNode n) { element = e; next = n; prev = p; } void set. Element(Object new. Elem) { element = new. Elem; } void set. Next(DLNode new. Next) { next = new. Next; } void set. Prev(DLNode new. Prev) { prev = new. Prev; } Object get. Element() { return element; } DLNode get. Next() { return next; } DLNode get. Prev() { return prev; } } 6
Implementação do Deque com lista dupla public class My. Deque implements Deque { DLNode header, trailer; int size; // sentinels // number of elements public My. Deque() { // initialize an empty deque header = new DLNode(); trailer = new DLNode(); header. set. Next(trailer); // make header point to trailer. set. Prev(header); // make trailer point to header size = 0; } 7
Método remove. Ultimo() public Object remove. Ultimo() throws Deque. Empty. Exception { if (esta. Vazia()) throw new Deque. Empty. Exception("Deque is empty. "); DLNode last = trailer. get. Prev(); Object o = last. get. Element(); DLNode secondtolast = last. get. Prev(); trailer. set. Prev(secondtolast); secondtolast. set. Next(trailer); size--; return o; } 8
Método insere. Primeiro() public void insere. Primeiro (Object o) { DLNode second = header. get. Next(); DLNode first = new DLNode(o, header, second); second. set. Prev(first); header. set. Next(first); size++; } 9
Implementação de Pilha com Deque - 1 n A tabela a seguir mapeia os métodos do ADT pilha para os métodos da deque: Método da Pilha Implementação da Deque tamanho( ) esta. Vazia ( ) topo( ) ultimo( ) empilha(e) insere. Ultimo(e) desempilha( ) remove. Ultimo( ) 10
Implementação de Pilha com Deque - 2 n A tabela a seguir mapeia os métodos do ADT pilha para os métodos da deque: Método da Pilha Implementação da Deque tamanho( ) esta. Vazia ( ) topo( ) primeiro( ) empilha(e) insere. Primeiro(e) desempilha( ) remove. Primeiro( ) 11
Implementação de Fila com Deque n A tabela a seguir mapeia os métodos do ADT fila para os métodos da deque: Método da Fila Implementação da Deque tamanho( ) esta. Vazia ( ) inicio( ) primeiro( ) insere(e) insere. Ultimo(e) remove( ) remove. Primeiro( ) 12
Implementação de Pilha com Deque public class Deque. Stack implements Pilha { private Deque d; public Deque. Stack() { d = new Implem. Deque(); } public int tamanho() { return d. tamanho(); } public boolean esta. Vazia() { return d. esta. Vazia(); } public void empilha (Object obj) { d. insere. Ultimo(obj); } 13
Implementação de Pilha com Deque public Object topo() throws Pilha. Vazia. Exception { try { return d. ultimo(); } catch (Deque. Empty. Exception ece) { throw new Pilha. Vazia. Exception (“Pilha esta vazia!"); } } public Object desempilha() throws Pilha. Vazia. Exception { try { return d. remove. Ultimo(); } catch (Deque. Empty. Exception ece) { throw new Pilha. Vazia. Exception (" Pilha esta vazia!"); } } } 14
Padrão Adapter Interface Pilha Classe Deque. Stack Classe Deque 15
Padrão Abstract Factory 16
Padrão Abstract Factory - Criar. Fila - Criar. Pilha. Array Implem. Estatica Implem. Dinamica Pilha. Din Fila. Array Fila. Din 17
Padrão Abstract Factory - Criar. Fila - Criar. Pilha. Array Implem. Estatica Implem. Dinamica Pilha. Din Fila. Array Fila. Din 18
- Deque salman
- Input restricted deque
- In a rootisharraystack, a call to get(20) will return
- Deque and priority queue
- Deque falls
- Deque salman
- Tad libros digitales
- Fila teria
- Tad wanveer
- Sequencial
- Tipos abstratos de dados
- Hsms tad
- Tad pila
- Mesa de ayuda tad
- Sas libros digitales
- Type abstrait de données
- Agnimile purohitam meaning
- Tad gerlinger oak brook
- Data abstraction and problem solving with java