Vector e Estruturas Encadeadas Profa

Slides:



Advertisements
Apresentações semelhantes
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Advertisements

Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo www. decom. ufop
Estruturas de Dados Marcio Gonçalves.
Désiré NGuessan Programação II Estruturas de Dados
TADS – Tipos Abstratos de Dados
TADS – Tipos Abstratos de Dados
Alocação Dinâmida de Memória
Principais famílias de algoritmos
INE 5384 Estruturas de Dados Prof a. Patrícia Vilain
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
SSC SISTEMAS OPERACIONAIS I Aula 15 – Gerenciamento de Memória
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Arrays Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs.: Luciana Nedel, Júlio Machado e Bernardo Copstein) Arrays Exercícios.
Introdução à Programação OO Usando Java Profa
Polimorfismo e Classes Abstratas Profa
Expressões, controle de fluxo, wrappers e strings Profa
Introdução à Programação OO Usando Java Profa
Herança Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs: Luciana Nedel e Júlio Machado) Packages (bibliotecas de classes) Atributos.
Linguagem C LPG-I – Variáveis Estruturadas – Vetores
LPG - I: Alocação Dinâmica de Memória - Ponteiros
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Prof.Sofia Mara de Souza AULA 4
Robson Godoi / Sandra Siebra
Listas Encadeadas.
Alocação Dinâmica de Memória Professor Mário Dantas
Listas Lineares Estrutura de Dados.
Aula prática 6 Vetores e Matrizes
Linguagem de Programação II Parte IX
Listas lineares Denise Guliato Faculdade de Computação – UFU
Estruturas de Dados com Jogos
Alocação Dinâmica de Memória
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS
Nomes, Variáveis e Vinculações
Aula 3 Vetores e Listas. Arrays (vetores) Array – sequência de elementos do mesmo tipo. Tamanho do Array – seu número de elementos (número fixo) Consequência:
INE 5384 Estruturas de Dados Prof a. Patrícia Vilain
Estruturas de Dados Aula 5: Matrizes
Estruturas de Dados Aula 9: Listas (parte 1)
Sistemas Operacionais
Capítulo VIII Ambientes de Execução
1 Alocação Dinâmica Quando se declara arrays o tamanho deve ser fixo e definido primeiramente –Alocação estática Pode-se alocar dinamicamente o espaço.
PROGRAMAÇÃO WEB AULA 03 Prof. Gustavo Linhares Instituto Federal de Educação, Ciência e Tecnologia do Norte de Minas Gerais.
Pilhas e Filas usando Alocação Estática e Dinâmica de Memória
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Linguagem de Programação II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Algoritmos e estrutura de dados Prof. Luiz Gonzaga da Silveira Jr
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Prof. Alessandro Gonçalves
Lista Linear Base para outras estruturas
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Gerenciamento de Memória - Capítulo 7 - Sistemas Operacionais Prof. Dr. José Carlos Becceneri Luciana Sêda Cardoso.
Estrutura de Dados II Alocação Dinâmica. Alocação de memória Ao ser executado, um programa carrega seu código executável para a memória; Uma parte da.
Objetivos Ao concluir esta Disciplina espera-se que os alunos sejam capazes de: Distinguir os conceitos de Estrutura e Dados; Compreender o que são, como.
© Copyright 2007 Algoritmos e Estruturas de Dados - Todos os direitos reservados Estruturas de Dados Dinâmicas IF672 - Algoritmos e Estruturas de Dados.
Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour ▐ Polimorfismo ▐ Exemplo ▐ Classes Abstratas.
 A linguagem Java tem diversas classes para a manipulação dos conjuntos de dados. Esses dados podem ser organizados de duas maneiras diferentes: ◦ Vetores.
Estruturas de Dados Murilo Salgado Razoli.
Estrutura de Dados Aula 3 - Listas
 O que são arrays:  estruturas de dados homogêneas  coleção de elementos do mesmo tipo referenciada por um nome comum  um array pode ser imaginado.
Ponteiros. Programação II Professora: Mai-Ly vanessa horário: ter 9h-11h; sex 11h-13h Aula 1.
Array e ArrayList LPOO – 01/09/14.
INTRODUÇÃO THOBER CORADI DETOFENO, MSC. Aula 01 JOINVILLE 2015 Universidade do Estado de Santa Catarina – CCT/UDESC.
Programação em C Aula 9.
INE5408 Estruturas de Dados Listas Encadeadas Simples.
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Sistemas Operacionais Gerência de Memória Funções básicas (número, tamanho e segurança) Alocação contígua simples Técnica de overlay Alocação particionada.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Introdução a Programação Aula 03 Jackson Eduardo
Transcrição da apresentação:

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

Estruturas de dados Estruturas estáticas Estruturas dinâmicas tamanho fixo arrays Estruturas dinâmicas aumentam e diminuem em tempo de execução listas encadeadas pilhas filas árvores

Vector Arrays Classe Vector Tamanho fixo 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

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

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.

Vector Métodos Construtores addElement( elemento ) 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

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()

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

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); vetor.insertElementAt(i3,0); if (vetor.contains(i3)) System.out.println("i3 foi incluido no vetor!"); vetor.removeAllElements(); }

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

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

Classes que se auto-referenciam Dois objetos de mesma classe, ligados 10 15 Dado e referência (link)

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 VirtualMachineError 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.

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 H D Q firstNode lastNode ...

Operações em listas encadeadas insertAtFront 7 11 firstNode 12 new ListNode 7 11 firstNode 12 new ListNode 7 11 firstNode 12 new ListNode

Operações em listas encadeadas insertAtBack 12 7 11 firstNode lastNode 5 new ListNode 12 7 11 firstNode lastNode 5 new ListNode 12 7 11 firstNode lastNode 5 new ListNode

Operações em listas encadeadas removeFromFront 12 7 11 firstNode lastNode 5 removeItem 12 7 11 firstNode lastNode 5 removeItem 12 7 11 firstNode lastNode 5

Operações em listas encadeadas removeFromBack lastNode current removeItem 12 7 11 firstNode 5

Implementação de uma lista de números inteiros 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) public class Nodo{ private int val; Nodo prox; public Nodo(int n) { val = n; prox = null; } public int getVal() return(val);

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;

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);

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;

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)

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)

Árvores Estruturas encadeadas não-lineares Árvores binárias 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

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: 1 4 7 9 3 4 depois da compressão: 1 4 7 9 3