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

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

Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Estruturas de dados Vector.

Apresentações semelhantes


Apresentação em tema: "Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Estruturas de dados Vector."— Transcrição da apresentação:

1 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Estruturas de dados Vector Estruturas encadeadas Classes que se auto-referenciam Alocação dinâmica de memória Pilhas Filas Árvores Vector e Estruturas Encadeadas Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs: Luciana Nedel, Júlio Machado, Marcelo Cohen e Bernardo Copstein)

2 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Estruturas de dados Estruturas estáticas tamanho fixo arrays Estruturas dinâmicas aumentam e diminuem em tempo de execução listas encadeadas pilhas filas árvores

3 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Vector Arrays Tamanho fixo Classe Vector Um vetor é uma estrutura de dados que, assim como um arranjo, permite acesso direto a seus elementos através da especificação de sua posição Semelhante aos arrays, mas com armazenamento dinâmico

4 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Vector Classe Vector Portanto, um vetor não tem tamanho fixo. §Capacidade: é o espaço reservado Pode armazenar até a capacidade especificada previamente Se passar do limite, duplica a capacidade automaticamente (ou aumenta de acordo com um incremento pré-determinado) §Tamanho: é o total de elementos no vetor §Tamanho <= capacidade

5 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Vector Classe Vector Utiliza-se o pacote java.util.Vector §import java.util.Vector; Vectors armazenam referências a objetos §Para armazenas tipos primitivos, deve-se utilizar os wrappers § Float, Integer, Long, etc.

6 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Vector Métodos Construtores § Vector () - capacidade inicial padrão é 10 elementos § Vector (capacidade inicial) - capacidade é duplicada quando há overflow § Vector (cap. inicial, incremento) - incremento é o quanto a capacidade é aumentada quando houver um overflow addElement ( elemento ) §Inclui elemento no final (pode ter que aumentar a capacidade para mais um elemento) insertElementAt ( elemento, posição ) §Insere e desloca os elementos subsequentes

7 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Vector Métodos setElementAt ( novoElemento, posição ) §Substitui um elemento por outro elementAt ( posição ) §Retorna o elemento armazenado na posição size () §Retorna o número de componentes do vetor removeElement ( elemento ) §Procura e remove o primeiro elemento encontrado removeElementAt ( posição ) removeAllElements ()

8 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Vector Métodos firstElement (), lastElement () isEmpty () §Testa se o vetor não tem componentes (retorna um boolean) contains ( elemento ) §Retorna true se encontrar o elemento no vetor capacity () §Retorna a atual capacidade do vetor indexOf ( elemento ) §Retorna a posição do elemento ou -1 se não achar

9 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Vector import java.util.Vector; public class TestaVector { public static void main() { Vector vetor = new Vector(1,2); //tamanho e incremento Integer i1= new Integer(20), i2= new Integer(30); Integer i3= new Integer(40); vetor.add(i1); System.out.println("Size=" + vetor.size() + " Capacity=" + vetor.capacity()); vetor.add(i2); System.out.println("Size=" + vetor.size() + " Capacity=" + vetor.capacity()); vetor.insertElementAt(i3,0); System.out.println("Size=" + vetor.size() + " Capacity=" + vetor.capacity()); if (vetor.contains(i3)) System.out.println("i3 foi incluido no vetor!"); vetor.removeAllElements(); System.out.println("Size=" + vetor.size() + " Capacity=" + vetor.capacity()); }

10 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Estruturas encadeadas Estruturas encadeadas são úteis naquelas situações em que não é possível prever o número de entradas de dados em tempo de compilação ou quando o tipo de operação que tiver de ser feita sobre essas entradas adequar-se melhor a uma estrutura encadeada do que a um vetor Um dos tipos mais simples de estruturas encadeadas são as listas encadeadas simples

11 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Classes que se auto-referenciam Contêm referência a objeto da mesma classe permitem implementar estruturas de dados encadeadas class Node { private int data; private Node next; public Node( int d ) { /* constructor body */ } public void setData( int d ) { /* method body */ } public int getData() { /* method body */ } public void setNext( Node nextNode ) { /* method body */ } public Node getNext() { /* method body */ } } Atributo next corresponde ao link

12 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Dado e referência (link) Classes que se auto-referenciam Dois objetos de mesma classe, ligados

13 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Alocação dinâmica de memória Obtenção de memória em tempo de execução operador new §obtenção de memória em função do tipo §retorna uma referência ao objeto recém-criado limite = quantidade de memória física ou virtual disponível se não há memória disponível: erro OutOfMemoryError –Node nodeToAdd = new Node( 10 ); –10 é o valor do atributo armazenado em Node liberação do espaço não necessário Java tem garbage collector automática public class OutOfMemoryError extends VirtualMachineErrorVirtualMachineError Thrown when the Java Virtual Machine cannot allocate an object because it is out of memory, and no more memory could be made available by the garbage collector.

14 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Listas encadeadas Seqüência linear de nodos, que são instâncias de classe que se auto-referencia nodos conectados por links acesso direto ao primeiro e último elemento outros nodos obtidos a partir dos links Alocação dinâmica HDQ firstNodelastNode...

15 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour 711 firstNode 12 new ListNode 711 firstNode 12 new ListNode 711 firstNode 12 new ListNode Operações em listas encadeadas insertAtFront

16 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour firstNodelastNode 5 new ListNode firstNodelastNode 5 new ListNode firstNodelastNode 5 new ListNode Operações em listas encadeadas insertAtBack

17 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour firstNodelastNode firstNodelastNode 5 removeItem firstNodelastNode 5 removeItem Operações em listas encadeadas removeFromFront

18 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour lastNode current removeItem firstNode 5 Operações em listas encadeadas removeFromBack

19 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Implementação de uma lista de números inteiros public class Nodo{ private int val; Nodo prox; public Nodo(int n) { val = n; prox = null; } public int getVal() { return(val); } class Lista{ private Nodo prim,ult; public Lista(){ prim = null; ult = null; } public boolean empty(){ if (prim == null) return(true); else return(false); } public void add(int nro) { } public Nodo find(int n) { } public void del(int n) { } }

20 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Adição de nodos à lista public void add(int nro){ Nodo n = new Nodo(nro); if (prim == null){ prim = n; ult = n; } else{ ult.prox = n; ult = ult.prox; }

21 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Pesquisa de nodos na lista public Nodo find(int n){ Nodo aux; aux = prim; while(aux != null){ if (aux.getVal() == n) return(aux); aux = aux.prox; } return(null); }

22 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Remoção de nodos da lista public void del(int n){ Nodo ant; if (prim == null) return; if (n == prim.getVal()){ if (ult == prim) ult = prim.prox; prim = prim.prox; return; } ant = prim; while(ant.prox != null){ if (ant.prox.getVal() == n){ if (ant.prox == ult) ult = ant; ant.prox = ant.prox.prox; } ant = ant.prox; }

23 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Pilhas Estrutura do tipo Last-In, First-Out (LIFO) Referência ao nodo no topo da pilha São listas restritas Nodos inseridos e removidos do início Métodos push (inserir) e pop (remover)

24 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Filas Estrutura do tipo First-In, First-Out (FIFO) Mantém referência ao nodo no início e no fim da fila Métodos colocar na fila ( insert ) retirar da fila ( remove )

25 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Árvores Estruturas encadeadas não-lineares nodos podem ter dois ou mais links, indicando dois ou mais nodos filhos primeiro nodo é o nodo raiz nodos sem filhos são folhas Árvores binárias diferentes algoritmos de caminhamento

26 Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Exercícios 1) Acrescente novos métodos a classe Lista: a) show( ) - mostra lista b) addOrdem( ) - permite a inserção ordenada de um nodo c) ordena( ) - ordena a lista d) tamanho( ) - retorna o número de elementos da lista e) compress( ) - elimina da lista os valores repetidos. Exemplo: depois da compressão:


Carregar ppt "Vector e Estruturas Encadeadas - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Estruturas de dados Vector."

Apresentações semelhantes


Anúncios Google