Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Documentos relacionados
Estrutura de Dados. Aleardo Manacero Jr.

10.1. Aula 10: Pilhas. O conceito de pilha. Algoritmos de inserção e remoção. Exemplo: Notação Polonesa

3.2.2 Pilha (LIFO - last in, first out) - Inserção e remoção apenas no final da lista.

Estrutura de Dados. ! Listas lineares. ! Como manipulá-las: ! estática. ! dinâmicas. ! pilhas. ! filas

Estrutura de Dados. Estrutura de Dados Recursividade. Exemplo: 5! = 5 x 4! 4! = 4 x 3! 3! = 3 X 2! 2! = 2 x 1! 1! = 1 x 0!

Edital de Seleção 023/2018 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

ESTRUTURA DE DADOS (TCC )

Pilhas e Filas. Nádia Félix e Hebert Coelho

Estrutura de Dados II

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Pilhas e Filas. Prof. Walteno Martins Parreira Júnior.

Aula 07: Algoritmos de busca e Listas encadeadas

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Á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

Estruturas de Dados I

Pilhas. ser acessada somente por uma de suas extremidades. pelo topo. S Uma pilha é uma estrutura linear de dados que pode

Exemplos. Alocação Dinâmica de Pilhas. Pilhas. Pilhas. Implementação Seqüencial X Encadeada. SCE 182 Algoritmos e Estruturas de Dados I

Carlos Eduardo Batista. Centro de Informática - UFPB

Estrutura de Dados: Aula 3 - Linguagem C

Instituto Luterano de Ensino Superior de Ji-Paraná Curso Bacharelado em Informática Estrutura de Dados I Prof.: José Luiz A.

Bit (Binary Digit) é a menor unidade de armazenamento de informação dentro do computador; Byte é a união de 8 bits capaz de representar 256

TCC Prof.: Leandro A. F. Fernandes Conteúdo: Listas Lineares

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Algoritmos e Estrutura de Dados Aula 08 Pilhas

Estruturas de Dados Pilhas, Filas, Listas

Universidade Federal do Ma Curso de Ciência da Computação

Estruturas de Dados em C++ Conceitos. Leandro Tonietto jun-09

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.

1. Listas sequenciais versus listas ligadas. Lista sequencial

Estrutura de Dados e Arquivos Ementa Objetivo Geral Conteúdo Avaliação

ASSOCIAÇÃO PARAIBANA DE ENSINO RENOVADO FACULDADE PARAIBANA DE PROCESSAMENTO DE DADOS ESTRUTURA DE DADOS

Alocação Seqüencial VAL MAX TOPO

Capítulo 8: Abstrações de dados

Estruturas de Dados Estruturas de Dados Fundamentais

Aula 2 Listas Lineares Sequenciais. prof Leticia Winkler

Estruturas de Dados Filas

S U M Á R I O. Definição de Estrutura de Dados. Vetores. Listas Ligadas. Pilhas. Filas

Filas. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1

Pilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista

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

Universidade de São Paulo

IV Escola de Inverno Maratona de Programação UNIFEI Intermediário I

Documento de uso exclusivo da unidade, não possui valor legal. 28/06/ :43:00. Matéria: Carga Horária Total. Prática: 44 Campo: 44

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica)

Lista de Figuras Figura 1 1: Figura 1 2: Figura 1 3: Figura 1 4: Figura 1 5: Figura 1 6: Figura 1 7: Figura 2 1: Figura 2 2: Figura 2 3: Figura 2 4:

Aula 7 e 8 Filas e suas Aplicações. Prof. Leticia Winkler

Aplicações de listas e outras estruturas

ESTRUTURA DE DADOS FILAS DINÂMICAS

Estruturas de Dados Pilhas, Filas, Listas

Algoritmos e Estruturas de Dados 2007/2008

Pilhas. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Métodos Computacionais. Listas Encadeadas

HASHING HASHING 6/10/2008

Informática Parte 18 Prof. Márcio Hunecke

Edital de Seleção 016/2018 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Estrutura de Dados Listas

Pilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista

Algoritmos de Busca em Vetores

Listas Estáticas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

Prof. Jesus José de Oliveira Neto

Estruturas de Dados Pilhas, Filas e Deques

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio

Tipos e Estruturas de Dados Profa. Graça Nunes Lista de Exercícios (Listas Encadeadas, Duplamente Encadeadas e Circulares)

Projeto e Análise de Algoritmos

# Estrutura de Dados # Aula 06 Pilhas Estáticas. Prof. Leinylson Fontinele Pereira

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

Árvores Conceitos gerais

UNIVERSIDADE DA BEIRA INTERIOR

Edital de Seleção 055/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Classificação e Pesquisa

Sumário. 1.1 Variáveis Globais e Locais Passagem de Parâmetro (por valor por referência) 1

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

Pesquisa Linear. Adriano J. Holanda 15/3/2016

PRIMEIRA AVALIAÇÃO IDENTIFICAÇÃO. Nome: ID: 25/04/2005. PARTE I Questões Objetivas

CES-11. Pilhas Definição Operações Filas. Operações Deques. Definição. Operações

Revisão de TDA, Pilhas e Filas

Estruturas de Dados. Cristina Gomes Fernandes. Estruturas de Dados p. 1

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

REVISÃO DE PILHAS E FILAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Algoritmos e Estruturas de Dados I

HASHING Hashing Motivação - Acesso Direto:

Estruturas de Dados Apresentação da Disciplina

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

Aplicações de listas Outras estruturas

Filas Implementação Sequencial

Métodos de Busca Parte 1

Complexidade de algoritmos Notação Big-O

ICET CURSO: Ciência da Computação e Sistemas de Informação (Estrutura de Dados) Estudos Disciplinares Campus: Data: / / Nome:

1. Selecione a Estrutura de Dados que melhor representa os diretórios ou pastas de arquivos do computador.

Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 03 Pag.: 1

INF1010 Lista de Exercícios 2

Disciplina que estuda as técnicas computacionais para a organização e manipulação eficiente de quaisquer quantidades de informação.

Lista de Exercícios sobre Listas Implementadas por Encadeamento

Lista de Exercícios 04

AVALIAÇÃO DE CONHECIMENTO ESPECÍFICO

Carlos Eduardo Batista. Centro de Informática - UFPB

Transcrição:

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Tópicos Introdução Alocação sequencial Listas lineares, pilhas e filas, notação polonesa Alocação encadeada Listas simplemente encadeadas, pilhas e filas, listas circulares, listas duplamente encadeadas, representação de grafos Exercícios

Introdução Lista linear (ou tabela): conjunto de n 0 nós L[1], L[2],..., L[n] onde: Se n > 0, L[1] é o primeiro nó Para 1 < k n, o nó L[k] é precedido por L[k-1] Operações frequentes em listas: busca, inclusão e remoção Outras operações: alteração de elemento, combinação de duas listas, ordenação, determinar primeiro e último nó, cardinalidade, etc.

Introdução Tipos de listas lineares: variam de acordo com local de inserções e remoções Pilha: inserções e remoções somente em uma extremidade Fila: inserção em uma extremidade e remoção na outra Deque (double ended queue): inserções e remoções apenas nas extremidades Tipo de armazenamento de listas lineares Alocação sequencial: endereços contíguos de memória Alocação encadeada: endereços não contíguos

Alocação sequencial Alocação sequencial: nós em posições contíguas de memória Método mais simples Endereço do (j+1)-ésimo nó: endereço do j-ésimo + c c: tamanho (em bytes/palavras) de cada nó Cálculo de endereço: automaticamente pelo compilador Implementação: vetores estáticos/dinâmicos

Alocação sequencial: listas lineares Cada nó: composto por campos Campo: característica distinta do elemento da lista Chave: campo identificador único Nós podem estar ordenados ou não pelo campo chave Exemplo de lista linear L com n elementos:

Alocação sequencial: listas lineares Algoritmo busca1: busca por um nó na lista Entrada: a chave x do nó a ser buscado Saída: índice do nó cuja chave = x ou 0, caso não exista

Alocação sequencial: listas lineares Algoritmo busca: melhoria prática Criação de novo nó com chave procurada na posição n+1

Alocação sequencial: listas lineares Complexidade de pior caso de busca1 e busca: O(n) Na prática: em cada iteração busca1 faz 2 comparações busca faz 1 comparação

Alocação sequencial: listas lineares Algoritmo busca-ord: busca em lista ordenada Complexidade de pior caso?

Alocação sequencial: listas lineares Algoritmo de busca binária: busca mais eficiente em lista ordenada

Alocação sequencial: listas lineares Complexidade de pior da busca binária Cada iteração: tempo constante Quantas iterações? Na primeira iteração: tamanho da lista é n Na segunda: tamanho da lista reduzido pela metade Na terceira: tamanho da lista reduzido pela metade... Última iteração: tamanho da lista é 1 São executadas aproximadamente log 2 n iterações Complexidade: O(log 2 n) Versão recursiva da busca binária?

Alocação sequencial: listas lineares Operações de inserção e remoção Utilizam procedimento de busca Consideram que a lista não está ordenada Lista tem tamanho n Memória tem M posições disponíveis

Alocação sequencial: listas lineares Algoritmo de inserção:

Alocação sequencial: listas lineares Algoritmo de remoção:

Alocação sequencial: listas lineares Complexidade de pior caso da inserção e remoção Dependente da busca: O(n) Remoção: é necessário também movimentar nós O(n) movimentos no pior caso E se as listas estivessem ordenadas? Complexidade de pior caso da busca? Busca binária Complexidade da inserção? Complexidade da remoção?

Alocação sequencial: pilhas e filas Pilhas, filas e deques: inserções e remoções sem movimentação de nós Alocação sequencial é adequada Pilha: estrutura de dados LIFO (last in first out) Operações: Inserção/empilha/push Remoção/desempilha/pop Estado da pilha: uso de ponteiro (índice) topo Pilha vazia: topo = 0 Pilha cheia: topo = M

Alocação sequencial: pilhas e filas Operações em uma pilha:

Alocação sequencial: pilhas e filas Agoritmos de inserção e remoção na pilha: O(1)

Alocação sequencial: pilhas e filas Fila: estrutura de dados FIFO (first in first out) Operações: inserção e remoção Estado da fila: uso de ponteiros início (f) e retaguarda (r) Ponteiros trabalham de forma circular Fila vazia: f = r = 0 Fila cheia: ( r mod M + 1 ) = f

Alocação sequencial: pilhas e filas Operações em uma fila:

Alocação sequencial: pilhas e filas Algoritmos de inserção e remoção na fila: tempo constante

Aplicação: notação polonesa Representação de expressões aritméticas: compiladores Notação tradicional: A*B C/D Ambígua: necessidade de regras de prioridade Dificulta computação Notação parentizada: ( (A*B) (C/D) ) Sempre há par de parênteses a cada par de operandos e operador Notação polonesa: *AB / CD Operadores imediatamente antes dos operandos: não ambígua Notação polonesa reversa: AB * CD / Operadores após os operandos: não ambígua Operandos aparecem na mesma ordem da notação tradicional

Aplicação: notação polonesa

Alocação encadeada Alocação encadeada (alocação dinâmica): posições de memória alocadas ou desalocadas conforme necessidade Endereços dos nós: não contíguos nem ordenados Nós interligados por ponteiros Ponteiro armazena endereço do próximo nó na lista Ponteiro especial guarda início da lista

Alocação encadeada Alocação sequencial x Alocação encadeada Encadeada gasta mais memória: ponteiros Encadeada mais adequada para: juntar listas, separar listas em sublistas, etc. Sem necessidade de puxar/empurrar/copiar elementos Acesso ao k-ésimo elemento da lista Alocação sequencial: imediato Alocação encadeada: percurso até o elemento!

Alocação encadeada: listas lineares simplesmente encadeadas Algoritmo para impressão de lista

Alocação encadeada: listas lineares simplesmente encadeadas Nó-cabeça: nó especial que nunca é removido Serve para eliminar testes especiais nos algoritmos de inserção e remoção Utilizado nos próximos algoritmos

Alocação encadeada: listas lineares simplesmente encadeadas Busca em lista ordenada: O(n)

Alocação encadeada: listas lineares simplesmente encadeadas Inserção na lista:

Alocação encadeada: listas lineares simplesmente encadeadas Algoritmo de inserção: O(n)

Alocação encadeada: listas lineares simplesmente encadeadas Remoção na lista:

Alocação encadeada: listas lineares simplesmente encadeadas Algoritmo de remoção: O(n)

Alocação encadeada: pilhas e filas Pilhas e filas: sem nó-cabeça Pilha: ponteiro topo Pilha vazia: topo = Lista: ponteiros inicio e fim Fila vazia: inicio = fim =

Alocação encadeada: pilhas e filas Inserção e remoção na pilha:

Alocação encadeada: pilhas e filas Inserção na fila:

Alocação encadeada: pilhas e filas Remoção na fila:

Alocação encadeada: listas circulares Lista circular: último nó aponta para nó-cabeça Necessidade de readequar: busca, inserção, remoção Não há no fim da lista

Alocação encadeada: listas circulares Busca em lista circular encadeada Complexidade de pior caso?

Alocação encadeada: listas duplamente encadeadas Listas duplamente encadeadas Nem sempre variável ant da busca é suficiente Possibilidade de percorrer a lista nos dois sentidos Nós da lista com dois campos ponteiros: ant e post Podem ser circulares ou não, com nó-cabeça ou não

Alocação encadeada: listas duplamente encadeadas Busca em lista ordenada: Se x foi encontrado: retorna ponteiro para o nó Caso contrário: ponteiro para o nó que seria consecutivo

Alocação encadeada: listas duplamente encadeadas Inserção:

Alocação encadeada: listas duplamente encadeadas Algoritmo de inserção: O(n)

Alocação encadeada: listas duplamente encadeadas Remoção:

Alocação encadeada: listas duplamente encadeadas Algoritmo de remoção: O(n)

Aplicação: representação de grafos

Exercícios Livro Szwarcfiter: 2.1, 2.4, 2.6 a 2.18, 2.20, 2.21