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

Slides:



Advertisements
Apresentações semelhantes
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Advertisements

ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Ordenação de Dados em Memória
Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo www. decom. ufop
Estruturas de Dados Marcio Gonçalves.
Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
Pilhas e Filas CONTEÚDO (1) Pilhas (2) Filas.
Estruturas de Dados Árvores Binárias
Listas encadeadas Prof. Rosana Palazon.
Algoritmos de manipulação de estruturas elementares de dados
Listas duplamente encadeadas
TADS – Tipos Abstratos de Dados
Principais famílias de algoritmos
Padrão de Projeto Iterator
INE 5384 Estruturas de Dados Profa. Patrícia Vilain
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.
Pesquisa em Memória Primária
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Árvores Introdução e Aplicações Árvores de Busca Binária Fundamentos
Classificação e Pesquisa de Dados
Walfredo Cirne walfredo.dsc.ufpb.br
AED – Algoritmos e Estruturas de Dados
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Instrutor: Nilo Menezes
Slides: Prof. João Fabro UTFPR - Curitiba
Robson Godoi / Sandra Siebra
1 Aula 3 Listas e iteradores (cont.). 2003/2004 Programação Orientada para Objectos 2 ListaDeInt : interface class ListaDeInt { public: typedef int Item;
Aula 2 Listas e iteradores.
Listas Encadeadas.
ALGORITMOS E ESTRUTURAS DE DADOS
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Listas Lineares Estrutura de Dados.
Classes Revisando: –Forma de implementação de estruturas específicas –Atributos (grupos de dados) –Métodos (conjuntos de procedimentos)
Algoritmos e Estruturas de Dados II
Pesquisa em Memória Primária
INTELIGÊNCIA ARTIFICIAL
Principais operações em Listas TPA Listas Simples Inserção no Final 1.void insereNofinalDaLista(Lista *l, Elemento e){ 2.Lista paux,p; 3. p.
Implementação de FILAS com Alocação Dinâmica
Lista Encadeada Circular Lista Duplamente Encadeada
Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação
Hashing - Espalhamento
Entendendo as definições de classe
Introdução à Programação Orientada a Objetos com Java
INE 5384 Estruturas de Dados Prof a. Patrícia Vilain
Estruturas de Dados Aula 9: Listas (parte 1)
Os métodos equals() e hashCode()
Orientação a Objetos e Java Graduação em Ciência da Computação
Pilhas Profa. Nádia Félix.
Lista encadeada Representar um grupo de dados.
Estruturas de Dados PROFESSOR DIÓGENES FURLAN. Estruturas de Dados (ED) Programas operam sobre dados Dados são relacionados e possuem estrutura Como representar.
Árvore Binária de Busca
Listas Simplesmente Encadeadas
Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo.
2002/2003 Programação Orientada para Objectos 1 Aula 2 Noção de lista e de iterador Operações com listas e iteradores Classes embutidas.
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Árvores Binárias Profa. Patrícia A. Jaques Luiz Gonzaga Jr
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Módulo 9 Strings , Coleções e I/O
Estruturas de Dados I Segundo Período de 2008 Gabarito da Primeira Prova.
Tabela Hash Alunos : Gustavo Jorge Zanin nºUSP
Lista Linear Base para outras estruturas
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
JAVA – Fila ATAI.
1 TAD Fila com Prioridade -FCP ATAI. 2 TAD Fila com Prioridade (Priority Queue) TAD Fila com Prioridade armazena uma colecção de elementos com prioridade.
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.
Transcrição da apresentação:

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

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

Listas Ordenadas

Lista Ordenada LISTA ORDENADA: lista linear na qual os elementos aparecem em ordem, ou seja, do menor para o maior. Inserção de um elemento em uma lista ordenada: pré-condição: lista já está ordenada. pós-condição: lista continua ordenada.

Exemplos de Listas Ordenadas Itens de um índice remissivo (ordenados pelo nome do item) Nomes dos alunos em uma lista de chamada (ordenados pelo nome do aluno) Nomes dos aprovados em um concurso público (ordenados pelo resultado da prova)

Características de uma Lista Ordenada seqüência finita de elementos Seqüência Finita de Elementos

Características de uma Lista Ordenada Seqüência Finita de Elementos posição = 1 posição = 3

Características de uma Lista Ordenada Seqüência: próximo e anterior sucessor (próximo) predecessor (anterior)

Características de uma Lista Ordenada Seqüência: início e fim início final

Características de uma Lista Ordenada Comprimento Lista Vazia Comprimento = 5 Comprimento =

Operações sobre uma Lista Ordenada Inserção de elemento não é possível especificar a posição de inserção

Operações sobre uma Lista Ordenada Remoção de elemento posição = 1 posição = elemento =

Operações sobre uma Lista Ordenada Consulta Elemento da posição 2 8 Verificar se o elemento 20 está na lista true

Lista Ordenada Uma lista ordenada deve armazenar somente objetos que possam ser comparáveis. É necessário que o objeto tenha algum método para comparar se ele é menor, igual ou maior que outro objeto.

Alternativas de Implementação Lista Ordenada como Array Lista Ordenada como Lista Encadeada

Lista Ordenada como Array Os elementos, ordenados, ficam justapostos na memória através da utilização de um vetor unidimensional e5e5 e2e2 e1e1 e4e4 e3e3 e7e7 e6e6 emem... 9N

Lista Ordenada como Array Exemplo: N...

Lista Ordenada como Array Classe ListaOrdenadaArray implementa ListaOrdenada Atributos elementos (array com objetos Comparable) numeroElementos Métodos construtor () + métodos especificados na interface ListaOrdenada

Operações sobre a Lista Ordenada Exemplo: inserção do elemento

Operações sobre a Lista Ordenada Exemplo: exclusão do elemento

Lista Ordenada como Array public class ListaOrdenadaArray implements ListaOrdenada { private Comparable[] elementos; private int numElementos; private int aumento; public ListaOrdenadaArray (int tamanho) { this.elementos = new Comparable[tamanho]; this.numElementos = 0; this.aumento = tamanho / 10; } public ListaOrdenadaArray (int tamanho, int aumento) { this.elementos = new Comparable[tamanho]; this.numElementos = 0; this.aumento = aumento; }

PROFESSORA public void insere (Comparable elemento){ /** * Insere o objeto na lista ordenada. * A lista continua ordenada após a inserção do elemento */ if (this.numElementos == this.elementos.length){ Comparable[] novoArray = new Comparable[this.elementos.length + aumento]; System.arraycopy(elementos,0,novoArray,0,this.elementos.length); this.elementos = novoArray; } int cont = this.numElementos-1; while (cont >= 0 && elemento.compareTo(this.elementos[cont]) < 0){ this.elementos[cont+1] = this.elementos[cont]; cont--; } this.elementos[cont+1] = elemento; this.numElementos++; } Complexidade: O(N)

PROFESSORA public int retornaPosicao (Comparable elemento){ // SEM PESQUISA BINÁRIA /** * Retorna a primeira posicao do elemento, considerando * que a lista comeca na posicao 0. * Caso o elemento nao exista na lista, retorna -1. */ int cont = 0; while (cont<this.numElementos && this.elementos[cont].compareTo(elemento)<0) cont++; if (cont<this.numElementos && this.elementos[cont].compareTo(elemento)==0) return cont; else return -1; } Complexidade: O(N)

PROFESSORA public int retornaPosicao(Comparable elemento) { // COM PESQUISA BINÁRIA COM RECURSÃO return posicao (elemento, 0, this.numElementos-1); } private int posicao (Comparable elemento, int inicio, int fim){ if (fim < inicio) return -1; else { int meio = (inicio+fim) /2; if (this.elementos[meio].compareTo(elemento) == 0) //encontrou return meio; else if (this.elementos[meio].compareTo(elemento) > 0) //esta' na primeira parte return posicao (elemento,inicio,meio-1); else//esta' na segunda parte return posicao (elemento,meio+1,fim); } Complexidade: O(logN)

PROFESSORA public int retornaPosicao(Comparable elemento) { // COM PESQUISA BINÁRIA SEM RECURSÃO int fim = this.numElementos-1; int inicio = 0; while (inicio <= fim) { int meio = (inicio+fim) /2; if (this.elementos[meio].compareTo(elemento) == 0) //encontrou return meio; else if (this.elementos[meio].compareTo(elemento) > 0) //esta' na primeira parte fim = meio - 1; else//esta' na segunda parte inicio = meio + 1; } return -1; } Complexidade: O(logN)

Lista Ordenada Encadeada Os elementos, ordenados, estão associados entre si através de elos. enen e2e2 e1e1...

Lista Ordenada Encadeada Exemplo inicionumeroElementos 6 fim 138

Lista Ordenada Encadeada Classe ListaOrdenadaEncadeada implementa ListaOrdenada Atributos inicio (referência a objeto da classe NodoComparable) fim (referência a objeto da classe NodoComparable) numeroElementos Métodos construtor () + métodos especificados na interface ListaOrdenada

Lista Ordenada Encadeada Classe NodoComparable Atributos: elemento (Comparable) proximo (referência a um outro objeto da classe NodoComparable) enen elementopróximo

Lista Ordenada Encadeada Exemplo: inserção do elemento inicionumeroElementos 6 fim

Lista Ordenada Encadeada Exemplo: exclusão do elemento inicionumeroElementos 7 fim 138

Lista Ordenada Encadeada public class ListaOrdenadaEncadeada implements ListaOrdenada { private NodoComparable inicio; private NodoComparable fim; private int numElementos; public ListaOrdenadaEncadeada() { this.inicio = null; this.fim = null; this.numElementos = 0; } … }

PROFESSORA public void insere (Comparable elemento){ /** * Insere o objeto na lista ordenada. * A lista continua ordenada após a inserção do elemento */ NodoComparable nodo = new NodoComparable (elemento); NodoComparable aponta = this.inicio; NodoComparable anterior = null; while (aponta != null && aponta.retornaElemento().compareTo(elemento)<0){ anterior = aponta; aponta = aponta.retornaProximo(); }... Complexidade: O(N)

PROFESSORA... if (aponta == this.inicio){ nodo.atribuiProximo(this.inicio); this.inicio = nodo; if (this.fim == null) this.fim = nodo; } else if (aponta == null){ //inserir no final da lista this.fim.atribuiProximo(nodo); this.fim = nodo; } else{ //inserir no meio da lista anterior.atribuiProximo(nodo); nodo.atribuiProximo(aponta); } this.numElementos++; }

PROFESSORA public int retornaPosicao (Comparable elemento){ /** * Retorna a primeira posicao do elemento, considerando * que a lista comeca na posicao 0. * Caso o elemento nao exista na lista, retorna -1. */ NodoComparable aponta = this.inicio; int cont = 0; while (aponta!=null && aponta.retornaElemento().compareTo(elemento)<0){ aponta = aponta.retornaProximo(); cont++; } if (aponta!=null && aponta.retornaElemento().compareTo(elemento)==0) return cont; else return -1; } Complexidade: O(N)