1 / 39

INE 5384 Estruturas de Dados Prof a . Patrícia Vilain 2003.2

INE 5384 Estruturas de Dados Prof a . Patrícia Vilain 2003.2. Conteúdo. 1. Introdução 2. Listas 3. Listas Ordenadas 4. Filas 5. Pilhas 6. Árvores • Árvore Binária e Árvore AVL • Árvore N-ária e Árvore B 7. Tabelas de Dispersão (Hashing) 8. Métodos de Ordenação de Dados.

curry
Download Presentation

INE 5384 Estruturas de Dados Prof a . Patrícia Vilain 2003.2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. INE 5384 Estruturas de Dados Profa. Patrícia Vilain 2003.2

  2. Conteúdo 1. Introdução 2. Listas 3. Listas Ordenadas 4. Filas 5. Pilhas 6. Árvores • Árvore Binária e Árvore AVL • Árvore N-ária e Árvore B 7. Tabelas de Dispersão (Hashing) 8. Métodos de Ordenação de Dados

  3. Pilhas

  4. Pilha PILHA:lista linear cujas inserções e exclusões se realizam em uma única extremidade (topo da lista). O último elemento colocado na pilha fica no topo. O elemento retirado da pilha é sempre o elemento do topo da pilha. Uma pilha contém: • um método para inserir elementos na pilha (empilha) • um método para retirar elementos da pilha (desempilha) • um método para acessar o topo da pilha (retornaTopo) As filas são conhecidas como listas LIFO (Last In First Out) - último que entra, primeiro que sai.

  5. Exemplos de Pilhas • Pilha de livros • Pilha de caixas • Pilha de “objetos” quaisquer, …

  6. Exemplo de Pilha topo 3 . . . 25 12

  7. Operações sobre uma Pilha desempilha empilha 3 3 3 . . . 25 retornaTopo 12 LIFO: “last-in; first-out”

  8. Interface da Pilha public interface Pilha{ ??? }

  9. Interface da Pilha public interface Pilha{ void empilha(Objectelemento); Objectdesempilha(); Objecttopo(); boolean estaVazia (); int numeroElementos (); Iterator iterator (); ListIterator listIterator (); }

  10. Alternativas de Implementação • Pilha como Array • Pilha como Lista Encadeada

  11. Pilha como Array Seja pilha uma estrutura linear representada através de um array P com N posições. Uma pilha tem um atributo topo que indica a posição do topo da pilha no array. . . . 3 0 1 2 5 4 N-1 Pilha: 7 25 32 . . . 14 1 Onde deve ficar o topo da pilha?

  12. Pilha como Array Seja pilha uma estrutura linear representada através de um array P com N posições. Uma pilha tem um atributo topo que indica a posição do topo da pilha no array. . . . 3 0 1 2 5 4 N-1 Pilha: 7 25 32 . . . 14 1 topo

  13. Pilha como Array - Construtor public class PilhaArray implements Pilha { private Object[] elementos; private int numElementos; private int aumento; ??? } a partir do numElementos sabemos qual é o topo Complexidade: O(?)

  14. Pilha como Array - Construtor public class PilhaArray implements Pilha { private Object[] elementos; private int numElementos; private int aumento; public PilhaArray (int tamanho) { this.elementos = new Object[tamanho]; this.numElementos = 0; this.aumento = tamanho / 10; } … } Complexidade: O(1)

  15. Pilha como Array - Construtor public class PilhaArray implements Pilha { private Object[] elementos; private int numElementos; private int aumento; public PilhaArray (int tamanho, int aumento) { this.elementos = new Object[tamanho]; this.numElementos = 0; this.aumento = aumento; } … } Complexidade: O(1)

  16. Pilha como Array - Empilha . . . 3 0 1 2 5 4 N-1 Pilha: 25 1 7 . . . 32 topo = numElementos-1 . . . 3 0 1 2 5 4 N-1 Pilha: 25 1 7 . . . 32 8 topo = numElementos-1

  17. Pilha como Array - Empilha public void empilha (Object elemento) { ??? } Complexidade: O(?)

  18. Pilha como Array - Empilha - continuar public void empilha (Object elemento) { if (this.numElementos == this.elementos.length) { Object[] novoArray = new Object[this.elementos.length + aumento]; System.arraycopy(elementos,0,novoArray,0,this.elementos.length); this.elementos = novoArray; } this.elementos[this.numElementos] = elemento; this.numElementos++; } Complexidade: O(N) ???

  19. Pilha como Array - Desempilha . . . 3 0 1 2 5 4 N-1 Pilha: 7 25 32 . . . 14 1 topo 3 0 1 2 4 N-1 Pilha: 7 25 32 . . . 14 topo

  20. Pilha como Array - Desempilha public Object desempilha() { ??? } Complexidade: O(?)

  21. Pilha como Array - Desempilha public Object desempilha() { if (this.numElementos > 0 { Object elemento = this.elementos[this.numElementos-1]; this.elementos[this.numElementos-1] = null; this.numElementos--; return elemento; } else throw new ExcecaoPilha ("piha vazia!"); } Complexidade: O(1)

  22. Pilha como Array - Topo . . . 3 0 1 2 5 4 N-1 Pilha: 25 1 7 . . . 32 topo Topo = 3

  23. Pilha como Array - Topo public Object topo() { ??? } Complexidade: O(?)

  24. Pilha como Array - Topo public Object topo() { if (this.numElementos > 0) return this.elementos[this.numElementos-1]; else throw new ExcecaoPilha ("piha vazia!"); } Complexidade: O(1)

  25. Pilha como Array • estaVazia public boolean estaVazia (){ return this.numElementos == 0; } • numeroElementos public int numeroElementos (){ return this.numElementos; } Complexidade: O(1) Complexidade: O(1)

  26. Pilha Encadeada inicio numeroElementos fim 5 14 32 7 25 1 Onde deve ficar o topo da pilha?

  27. Pilha Encadeada inicio numeroElementos fim 5 14 32 7 25 1 topo Onde deve ficar o topo da pilha?

  28. Pilha Encadeada - Construtor public class PilhaEncadeada implements Pilha { private Nodo inicio; private int numElementos; public PilhaEncadeada() { ??? } … } Complexidade: O(?)

  29. Pilha Encadeada - Construtor public class PilhaEncadeada implements Pilha { private Nodo inicio; private int numElementos; public PilhaEncadeada() { this.inicio = null; this.numElementos = 0; } … } Complexidade: O(1)

  30. Pilha Encadeada - Empilha inicio numeroElementos 5 14 32 7 25 1 topo inicio numeroElementos 6 20 14 32 7 25 1 topo

  31. Pilha Encadeada - Empilha public void empilha (Object elemento) { ??? } Complexidade: O(?)

  32. Pilha Encadeada - Empilha public void empilha (Object elemento) { Nodo nodo = new Nodo(elemento); nodo.atribuiProximo(this.inicio); this.inicio = nodo; this.numElementos++; } Complexidade: O(1)

  33. Pilha Encadeada - Desempilha inicio numeroElementos 6 20 14 32 7 25 1 topo inicio numeroElementos 5 14 32 7 25 1 topo

  34. Pilha Encadeada - Desempilha public Object desempilha() { ??? } Complexidade: O(?)

  35. Pilha Encadeada - Desempilha public Object desempilha() { if (this.numElementos > 0){ Object elemento = inicio.retornaElemento(); this.inicio = this.inicio.retornaProximo(); this.numElementos--; return elemento; } else throw new ExcecaoPilha ("pilha vazia"); } Complexidade: O(1)

  36. Pilha Encadeada - Topo inicio numeroElementos 5 14 32 7 25 1 topo Topo = 14

  37. Pilha Encadeada - Topo public Object topo() { ??? } Complexidade: O(?)

  38. Pilha Encadeada - Topo public Object topo() { if (this.numElementos > 0) return this.inicio.retornaElemento(); else throw new ExcecaoPilha ("pilha vazia"); } Complexidade: O(1)

  39. Pilha Encadeada • estaVazia public boolean estaVazia() { return this.numElementos == 0; } • numeroElementos public int numeroElementos() { return this.numElementos; } Complexidade: O(1) Complexidade: O(1)

More Related