A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 TAD Deque ATAI. 2 ADT Deque 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.

Apresentações semelhantes


Apresentação em tema: "1 TAD Deque ATAI. 2 ADT Deque 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."— Transcrição da apresentação:

1 1 TAD Deque ATAI

2 2 ADT Deque 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: inserePrimeiro(e): Insere um novo elemento e no início de D Entrada: Objecto; Saída: Nenhuma insereUltimo(e): Insere um novo elemento e no final de D Entrada: Objecto; Saída: Nenhuma removePrimeiro(): Remove e retorna o primeiro elemento de D Entrada: Nenhuma; Saída: Objecto removeUltimo(): Remove e retorna o último elemento de D Entrada: Nenhuma; Saída: Objecto

3 3 ADT Deque Adicionalmente temos os seguintes métodos de suporte: primeiro(): Retorna o primeiro elemento de D Entrada: Nenhuma; Saída: Objecto ultimo(): Retorna o último elemento de D Entrada: Nenhuma; Saída: Objecto tamanho(): Retorna o número de elementos de D Entrada: Nenhuma; Saída: Inteiro estaVazia(): Determina se D está vazia Entrada: Nenhuma; Saída: Booleano

4 4 Exemplo de execução numa deque OperaçãoSaídaD inserePrimeiro(3)-(3) inserePrimeiro(5)-(5,3) removePrimeiro( )5(3) insereUltimo(7)-(3,7) removePrimeiro( )3(7) removeUltimo( )7( ) removePrimeiro( )"erro"( ) estaVazia( )verdade( ) inserePrimeiro(9)-(9) insereUltimo(7)-(9,7) tamanho( )2(9,7) inserePrimeiro(3)-(3,9,7) insereUltimo(5)-(3,9,7,5) removeUltimo( )5(3,9,7)

5 5 Interface Deque public interface Deque { int tamanho(); boolean estaVazia(); void inserePrimeiro(Object novo) throws DequeCheioException; void insereUltimo(Object novo) throws DequeCheioException; Object removeUltimo() throws DequeVazioException; Object removePrimeiro() throws DequeVazioException; Object ultimo() throws DequeVazioException; Object primeiro() throws DequeVazioException; }

6 6 Lista duplamente ligada 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; } 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; } }

7 7 Implementação do Deque com lista dupla public class MyDeque implements Deque { DLNode header, trailer; // sentinels int size; // number of elements public MyDeque() { // initialize an empty deque header = new DLNode(); trailer = new DLNode(); header.setNext(trailer); // make header point to trailer trailer.setPrev(header); // make trailer point to header size = 0; }

8 8 Método removeUltimo() public Object removeUltimo() throws DequeEmptyException { if (estaVazia()) throw new DequeEmptyException("Deque is empty."); DLNode last = trailer.getPrev(); Object o = last.getElement(); DLNode secondtolast = last.getPrev(); trailer.setPrev(secondtolast); secondtolast.setNext(trailer); size--; return o; }

9 9 Método inserePrimeiro() public void inserePrimeiro (Object o) { DLNode second = header.getNext(); DLNode first = new DLNode(o, header, second); second.setPrev(first); header.setNext(first); size++; }

10 10 Implementação de Pilha com Deque - 1 A tabela a seguir mapeia os métodos do ADT pilha para os métodos da deque: Método da PilhaImplementação da Deque tamanho( ) estaVazia ( ) topo( )ultimo( ) empilha(e)insereUltimo(e) desempilha( )removeUltimo( )

11 11 Implementação de Pilha com Deque - 2 A tabela a seguir mapeia os métodos do ADT pilha para os métodos da deque: Método da PilhaImplementação da Deque tamanho( ) estaVazia ( ) topo( )primeiro( ) empilha(e)inserePrimeiro(e) desempilha( )removePrimeiro( )

12 12 Implementação de Fila com Deque A tabela a seguir mapeia os métodos do ADT fila para os métodos da deque: Método da FilaImplementação da Deque tamanho( ) estaVazia ( ) inicio( )primeiro( ) insere(e)insereUltimo(e) remove( )removePrimeiro( )

13 13 Implementação de Pilha com Deque public class DequeStack implements Pilha { private Deque d; public DequeStack() { d = new ImplemDeque(); } public int tamanho() { return d.tamanho(); } public boolean estaVazia() { return d.estaVazia(); } public void empilha (Object obj) { d.insereUltimo(obj); }

14 14 Implementação de Pilha com Deque public Object topo() throws PilhaVaziaException { try { return d.ultimo(); } catch (DequeEmptyException ece) { throw new PilhaVaziaException (Pilha esta vazia!"); } public Object desempilha() throws PilhaVaziaException { try { return d.removeUltimo(); } catch (DequeEmptyException ece) { throw new PilhaVaziaException (" Pilha esta vazia!"); }

15 15 Padrão Adapter Interface Pilha Classe DequeStack Classe Deque

16 16 Padrão Abstract Factory

17 17 Padrão Abstract Factory Pilha PilhaArrayPilhaDin Fila FilaArrayFilaDin Implem. Dinamica Implem. Estatica - CriarFila - CriarPilha

18 18 Padrão Abstract Factory Pilha PilhaArrayPilhaDin Fila FilaArrayFilaDin Implem. Dinamica Implem. Estatica - CriarFila - CriarPilha


Carregar ppt "1 TAD Deque ATAI. 2 ADT Deque 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."

Apresentações semelhantes


Anúncios Google