Algoritmos e Estruturas de Dados I

Documentos relacionados
Filas de Prioridades Letícia Rodrigues Bueno

Estruturas de Dados para Conjuntos Disjuntos: Union-find Letícia Rodrigues Bueno

Quicksort Letícia Rodrigues Bueno

SCC0502 Algoritmos e Estruturas de Dados I

SCC0502 Algoritmos e Estruturas de Dados I. Profa. Maria Cristina

Teoria da Computação. Aula 9 Pesquisa em Memória Secundária 5COP096. Aula 9 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

SIN5013 Análise de Algoritmos e Estrutura de Dados - 1o Semestre de 2019

Análise de Algoritmos e Estruturas de Dados

BCC202 - Estrutura de Dados I

Estrutura de Dados. Plano de Ensino. Vilson Heck Junior. Campus Lages. Instituto Federal de Santa Catarina

Complexidade Assintótica de Programas Letícia Rodrigues Bueno

Teoria da Complexidade Computacional

Estruturas de Dados Aula 1: Introdução e conceitos básicos 28/02/2011

Métodos de Ordenação: Selection, Insertion, Bubble, Merge (Sort)

1 a Lista de Exercícios

Filas. Prof. Túlio Toffolo BCC202 Aula 12 Algoritmos e Estruturas de Dados I

ESTRUTURA DE DADOS DCC013

SCC-201 Introdução à Ciência de Computação II

B-tree. B-Trees. Estrutura do nodo da B-tree. Balanceamento. Disposição dos elementos ordenados na B-tree. Exemplo de uma B-tree de ordem 3

Estruturas de Dados I

Algoritmos em Grafos: Caminho Mínimo

BCC202 - Estrutura de Dados I

If969 - Algoritmos e Estruturas de Dados

Estruturas de Dados. Pedro Ribeiro 2017/2018 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Estruturas de Dados 2017/ / 16

SCC-501 Introdução à Ciência de Computação II

Grafos Caminhos mais Curtos

DISCIPLINA: Programação de Computadores I

MC3305 Algoritmos e Estruturas de Dados II. Aula 00 Apresentação. Prof. Jesús P. Mena-Chalco.

ESTRUTURAS DE DADOS (LEI, LM, LEE) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Campus Curitiba PLANO DE ENSINO

Algoritmos para Automação e Sistemas

CAL ( ) MIEIC/FEUP Grafos: Introdução (Março, 2011)

Caminho Mínimo de Fonte Única em Grafos sem Pesos Negativos

Algoritmos e Estruturas de Dados II

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados

PCC104 - Projeto e Análise de Algoritmos

Descrição da Disciplina

Estrutura de Dados Listas

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

AED Algoritmos e Estruturas de Dados LEE /2004

Teoria dos Grafos. Professor: Guilherme Oliveira Mota.

Teoria da Computação. Aula 3 Comportamento Assintótico 5COP096. Aula 3 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Projeto e Análise de Algoritmos. Introdução. Prof. Ademir Constantino Universidade Estadual de Maringá Departamento de Informática

Informações Importantes! INF TURMA A

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 9

Algoritmos e Estruturas de Dados: Lista Duplamente Encadeada

5COP096 TeoriadaComputação

UNIVERSIDADE PRESBITERIANA MACKENZIE Faculdade de Computação e Informática. 3 a ETAPA

Lista de Exercícios sobre Listas Implementadas por Encadeamento

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA DEPARTAMENTO DE INFORMÁTICA APLICADA

Listas - Outras. Listas Circulares Nós Cabeça Listas Duplamente Ligadas/Encadeadas Aplicações

Fila e Deque. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Árvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral

Lista de Exercícios 04

Complexidade de Algoritmos

Estruturas de Dados Aula 11: TAD Pilha

Heaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

Classificação e Pesquisa

Aula 10 Alocação Dinâmica de Memória Listas Encadeadas. prof Leticia Winkler

Estrutura de dados. Link do Google Drive: ED Apresentação Luiz Gonçalves Última revisão 8/12/14

Estrutura de dados - Listas Encadeadas

Algoritmos e Estruturas de Dados II LEIC

PROGRAMAÇÃO E ALGORITMOS (LEI, TSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017

Algoritmos e estrutura de dados

Matrizes Esparsas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

Transcrição:

Universidade do Estado do Amazonas Escola Superior de Tecnologia - EST Núcleo de Computação Algoritmos e Estruturas de Dados I Listas com implementação dinâmica Prof. Flávio José M. Coelho fcoelho@uea.edu.br

Objetivos Entender o que são... 1. Listas ligadas. 2. Listas simplesmente encadeadas (LSE). 3. Listas duplamente encadeadas (LDE). 4. Entender a implementação de uma LSE. Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 2 / 60

Listas ligadas Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 3 / 60

Listas ligadas Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 4 / 60

Listas ligadas Um nó tem dois campos: o item e um ponteiro para o próximo nó. Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 5 / 60

Listas ligadas Cada nó é alocado dinamicamente de uma região de memória denominada heap. Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 6 / 60

Listas ligadas Cada nó liga-se a um próximo nó formando uma lista ligada. Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 7 / 60

Listas ligadas O ponteiro do último nó é NIL pois não há próximo nó. Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 8 / 60

Listas ligadas Um ponteiro (prim) aponta para o primeiro nó da lista, e dá acesso ao início da lista. Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 9 / 60

Listas ligadas Outro ponteiro (ult) aponta para o último nó, e ajuda operações no final da lista. Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 10 / 60

Listas ligadas A lista é simplesmente encadeada (LSE), se cada nó se liga somente ao próximo nó. Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 11 / 60

Listas ligadas Em uma LSE somente é possível navegar pelos itens no sentido início-fim da lista. Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 12 / 60

Listas ligadas A lista é duplamente encadeada (LDE), se cada nó se liga ao próximo e ao nó anterior. Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 13 / 60

Listas ligadas Uma LDE permite navegação nos sentidos início-fim e fim-início. Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 14 / 60

TAD Lista ligada Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 15 / 60

TAD Lista Ligada Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 16 / 60

TAD Lista Ligada Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 17 / 60

TAD Lista Ligada Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 18 / 60

Operações Um nó-cabeça (item vazio) antes do início da lista facilita inserções e remoções. Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 19 / 60

CRIA(L) 1 L.prim = aloque novo NO 2 L.prim.prox = NIL 3 L.ult = L.prim Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 20 / 60

CRIA(L) Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 21 / 60

CRIA(L) (1) L.prim = aloque novo NO Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 22 / 60

CRIA(L) (2) L.prim.prox = NIL Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 23 / 60

CRIA(L) (3) L.ult = L.prim Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 24 / 60

INSERE(L, item) 1 L.ult.prox = aloque novo NO 2 L.ult = L.ult.prox 3 L.ult.prox = NIL 4 L.ult.item = item Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 25 / 60

INSERE(L, item) Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 26 / 60

INSERE(L, item) (1) L.ult.prox = aloque novo No. Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 27 / 60

INSERE(L, item) (2) L.ult = L.ult.prox Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 28 / 60

INSERE(L, item) (3) L.ult.prox = NIL Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 29 / 60

INSERE(L, item) (4) L.ult.item = item Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 30 / 60

INSERE(L, item) Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 31 / 60

REMOVE(L, r, item) 1 se L == 0 ou r == NIL ou r ==prim 2 impossível remoção 3 senão 4 item = r.item 5 p = PREDECESSOR(L, r) 6 p.prox = r.prox 7 se p.prox == NIL L.ult = p 8 desaloque r Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 32 / 60

REMOVE(L, r, item) Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 33 / 60

REMOVE(L, r, item) Parâmetro r aponta para o item a ser removido. Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 34 / 60

REMOVE(L, r, item) (4) item = r.item Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 35 / 60

REMOVE(L, r, item) (5) p = PREDECESSOR(L, r) Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 36 / 60

REMOVE(L, r, item) (6) p.prox = r.prox Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 37 / 60

REMOVE(L, r, item) (8) desaloque q Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 38 / 60

REMOVE(L, r, item) (8) desaloque q Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 39 / 60

REMOVE(L, r, item) Com o término da operação, p e r são destruídos. Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 40 / 60

REMOVE(L, r, item) Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 41 / 60

BUSCA(L, k) 1 p = L.prim.prox 2 enquanto p NIL e p.chave k 3 p = p.prox 4 retorne p Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 42 / 60

BUSCA(L, k) Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 43 / 60

BUSCA(L, k) (1) p = L.prim.prox Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 44 / 60

BUSCA(L, k) (2) enquanto p NIL e p.chave k (3) p = p.prox Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 45 / 60

BUSCA(L, k) (2) enquanto p NIL e p.chave k (3) p = p.prox Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 46 / 60

BUSCA(L, k) (4) Acha o item: retorne p = a 3 Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 47 / 60

BUSCA(L, k) (4) Não acha item: retorne p = NIL Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 48 / 60

MOSTRE(L) 1 p = L.prim.prox 2 enquanto p NIL 3 mostre p.item 4 p = p.prox Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 49 / 60

MOSTRE(L) Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 50 / 60

MOSTRE(L) (1) p = L.prim.prox Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 51 / 60

MOSTRE(L) (2) enquanto p NIL (3) mostre p.item (4) p = p.prox Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 52 / 60

MOSTRE(L) (2) enquanto p NIL (3) mostre p.item (4) p = p.prox Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 53 / 60

MOSTRE(L) (2) enquanto p NIL (3) mostre p.item (4) p = p.prox Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 54 / 60

MOSTRE(L) (2) enquanto p NIL (3) mostre p.item (4) p = p.prox Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 55 / 60

MOSTRE(L) Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 56 / 60

Conclusão #1 Lista ligada tem tamanho dinâmico, mas é mais complexa de se implementar do que lista estática. Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 57 / 60

Conclusão #2 Busca, mostra são O(n). Remoção é O(n), ou O(1) se a lista for LDE. Inserção é O(1). Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 58 / 60

Referências T. H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Introduction to Algorithms, 3rd edition, MIT Press, 2010 N. Ziviani. Projeto de Algoritmos com Implementação em Pascal C. Cengage Learning, 2012. Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 59 / 60

Onde obter este material: est.uea.edu.br/fcoelho Flávio José M. Coelho (EST/UEA) Algoritmos e Estruturas de Dados I Núcleo de Computação 60 / 60