Estruturas de Dados Pilhas, Filas e Deques



Documentos relacionados
ESTRUTURA DE DADOS PILHA

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

Listas Duplamente Encadeadas

ESTRUTURAS DE DADOS II MSc. Daniele Carvalho Oliveira

Avaliação de Expressões

Árvores. Algoritmos e Estruturas de Dados 2005/2006

Estrutura de Dados Básica

DAS5102 Fundamentos da Estrutura da Informação

PROGRAMAÇÃO II 3. PILHA DINÂMICA

Pilhas Filas e Listas

Estrutura de Dados Pilha (Stack)

Estruturas de Dados Aula 11: TAD Pilha 09/05/2011

Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais:

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti

Busca. Pesquisa sequencial

Curso : Tecnologia em Desenvolvimento de Sistemas - AEMS

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

Filas: conceitos e implementações

2ª Lista de Exercícios

Algoritmos e Estrutura de Dados III. Árvores

Programas operam sobre dados. Dados são relacionados e possuem estrutura. Como representar e manipular dados em um computador

Pilhas. Profa Morganna Diniz

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

Estruturas de Dados Árvores

Introdução aos cálculos de datas

Árvores Binárias de Busca

EAD Fila. - algumas operações realizam-se na frente/cabeça e outras na cauda da Fila

PROGRAMAÇÃO II 3. FILA DINÂMICA

ALGORITMOS E ESTRUTURAS DE DADOS Terceiro Trabalho Prático Recursividade e Pilhas

Desafios de Programação TCC Turma A-1

Algoritmos e Estrutura de Dados. Prof. Tiago A. E. Ferreira

Universidade Estadual de Mato Grosso do Sul - Curso de Ciência da Computação Disciplina: Estruturas de Dados Profª. Raquel Marcia Müller

Complexidade de Algoritmos

Sistemas Operacionais

7. ESTRUTURAS DE DADOS ESTÁTICAS E DINÂMICAS

ESTRUTURA DE DADOS DCC013

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

Tipo de Dados Abstractos: Pilha (stack)

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

Árvores Binárias de Busca

Algoritmos de pesquisa. Tabelas de dispersão/hash

Linguagem C: Árvores Binarias

Avaliação de expressões. Prof: Sérgio Souza Costa

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: Prof. Dr. Raimundo Moura

3.4 Representação física: alocação encadeada (dinâmica) Ptlista - variável ponteiro externa que indica o início da lista.

INTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E AULA TEÓRICA 4 PROF. MARCELO LUIZ SILVA (R E D)

INF 1007 Programação II

Árvores B + Prof Márcio Bueno. ed2tarde@marciobueno.com / ed2noite@marciobueno.com. Material da Prof a Ana Eliza Lopes Moura

Conceitos Importantes:

Pilhas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Árvores Balanceadas. Árvore binária completamente balanceada. Ocorre quando a árvore está cheia ou quase cheia com o nível n-1 completo

Árvore Binária de Busca

Na resolução de um problema por meio de um programa, a primeira providência é conceber um algoritmo adequado.

Tipos de Dado Abstrato: Listas, Filas e Pilhas

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados com Jogos. Capítulo 7 Generalização de Listas Encadeadas

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

INF PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15

Estruturas de Dados Pilhas, Filas, Listas

EAD Árvore árvore binária

-Estrutura linear de acesso seqüencial que ordena seus elementos pela seqüência cronológica de sua entrada;

Métodos Computacionais. Árvores

Árvores e Árvores Binárias

Microsoft Excel 2007

Introdução a Algoritmos Parte 04

Orientação a Objetos

Geração e Otimização de Código

Estruturas de Dados Aula 15: Árvores 17/05/2011

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Pesquisa em Memória Primária. Prof. Jonas Potros

Algoritmos e Estrutura de Dados II

Pedro Vasconcelos DCC/FCUP. Programação Funcional 15 a Aula Árvores de pesquisa

1. FUNÇÕES NO EXCEL 2007

Lista de Exercícios. Vetores

Arquitetura de Computadores. Tipos de Instruções

PROGRAMAÇÃO II 4. ÁRVORE

Estruturas de Dados I

Algoritmos e Estrutura de Dados Aula 08 Pilhas

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

IFTO LÓGICA DE PROGRAMAÇÃO AULA 02

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

Filas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Estruturas de Dados com Jogos. Capítulo 3 Filas - Alocação Sequencial e Estática

Sumário. INF01040 Introdução à Programação. Elaboração de um Programa. Regras para construção de um algoritmo

Listas Lineares. Fundamentos

Aplicações de Escritório Electrónico

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.

Curso: Técnico de Informática Disciplina: Redes de Computadores. 1- Apresentação Binária

Prof. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

Transcrição:

Estruturas de Dados Pilhas, Filas e Deques Prof. Eduardo Alchieri

Estruturas de Dados Pilhas

Pilhas Lista LIFO (Last In, First Out) Os elementos são colocados na estrutura (pilha) e retirados em ordem inversa a de sua chegada Inserção apenas no topo da pilha Remoção apenas no topo da pilha

Pilhas Operaçoes possíveis: Esvaziar a pilha Verificar se a pilha está vazia Colocar um dado no topo da pilha (empilhar) Retirar o dado do topo da pilha (desempilhar) Etc.

Pilhas Implementação de pilhas Usando vetores Pode-se implementar uma pilha de tamanho fixo usando vetores. Este tamanho determinará o número máximo de elementos que poderão estar na pilha ao mesmo tempo É necessário um inteiro para armazenar o valor da posição do vetor aonde encontra-se o topo da pilha Usando uma lista ligada A implementação de uma pilha que usa como estrutura básica uma lista ligada é mais simples, pois a lista não é uma estrutura de tamanho fixo Basicamente, os dados devem ser colocados (empilhados) em alguma das extremidades da lista e retirados (desempilhados) a partir desta mesma extremidade

Pilhas É ideal para processamento de estruturas aninhadas de profundidade imprevisível Uma pilha contém uma sequência de obrigações adiadas. A ordem de remoção garante que os dados mais internos serão processados depois dos mais externos Quando é necessário percorrer um conjunto de dados e guardar uma lista de coisas a fazer posteriormente O controle de sequências de chamadas de subprogramas A sintaxe de expressões aritméticas

Pilhas Aplicações Controle de delimitadores em uma equação (rastrear escopo): {(A + B) * C + (D + E)/[F + G] + H} / I Algoritmo: Percorrer a equação da seguinte forma: 1 se um inicializador de escopo for encontrado, o mesmo é empilhado 2 se um finalizar de escopo for encontrado, a pilha é verificada Se estiver vazia, então a equação é incorreta Se não, desempilhar e comparar com o finalizador Ao final, a pilha deve estar vazia

Pilhas Aplicações Recursividade A solução de um problema depende da solução de instâncias menores do mesmo problema

Pilhas Aplicações Quanto é fatorial(4)?

Pilhas Aplicações Avaliação de expressões posfixas (Trabalho 1) Notação infixa (é a usual): (5 + 9) * 2 + 6 * 5 Os operadores binários aparecem entre os operandos A ordem das operações são determinadas pela precedência dos operadores ou pelos parênteses ''('' '')'' Notação prefixa (notação polonesa): + * + 5 9 2 * 6 5 Notação posfixa (notação polonesa reversa): 5 9 + 2 * 6 5 * + Não faz uso de parênteses e não requer relações de precedência

Pilhas Aplicações Algoritmo para avaliação de expressões posfixas Os componentes da expressão são processados da esquerda para a direita como a seguir: Se o próximo componente da expressão é um operando, o valor do componente é colocado na pilha Se o próximo componente da expressão é um operador, então os seus operandos estão na pilha. O número requerido de operandos é retirado da pilha, a operação específica é realizada, e o resultado é armazenado de volta na pilha. Ao final, a pilha conterá um único dado que é o valor final da expressão Simule a execução do algoritmo com a expressão a seguir: 5 9 + 2 * 6 5 * +

Estruturas de Dados Filas

Filas Lista FIFO (First In, First Out) Os elementos são colocados e retirados por ordem de chegada Inserção apenas no final da fila Remoção apenas no início da fila

Filas Uma fila permite várias operações Criar uma fila vazia Inserir um novo item (no final) Remover um item (do início) Esvaziar a fila Etc.

Filas Implementação de filas Usando vetores Pode-se implementar uma fila de tamanho fixo usando vetores. Este tamanho determinará o número máximo de elementos que poderão estar na fila ao mesmo tempo É necessário dois inteiros para armazenar o valor das posições do vetor aonde se encontram o início e o final da fila Usando uma lista ligada A implementação de uma fila que usa como estrutura básica uma lista ligada é mais simples, pois a lista não é uma estrutura de tamanho fixo Basicamente, os dados devem ser colocados (enfileirados) no final da lista e retirados (desenfileirados) do início da lista.

Filas Aplicações As filas são utilizadas quando desejamos processar itens de acordo com a ordem de chegada (o primeiro a chegar será o primeiro a ser processado). Sistemas operacionais, por exemplo, usam filas para regular a ordem em que as tarefas devem receber processamento e recursos devem ser alocados a processos. Fila de prioridade (inserção ordenada) Outras aplicações Soma de inteiros (super) longos Manipulação de uma sequência de caracteres

Filas Aplicações Utilizada na implementação de percurso em largura em árvores Um percurso em largura percorre (visita) os nós da árvore segundo a ordem de seus níveis Uma maneira de implementar um percurso em largura de uma árvore é através do uso de uma fila: Para começar o percurso, o nó raiz é posto na fila Após, repetir os seguintes passos até que a fila esteja vazia: Retire e visite (percorra) o primeiro nó da fila Coloque, da esquerda para a direita, seus filhos na fila

Filas Simule o algoritmo para a seguinte arvore: A B C D E F G H I J L M

Pilhas e Filas Exercício Dada uma lista de caracteres formada por uma seqüência alternada de letras e dígitos, construa um método que retorne uma lista na qual as letras são mantidas na seqüência original e os dígitos são colocados na ordem inversa Exemplo: A 1 E 5 T 7 W 8 G A 8 E 7 T 5 W 1 G 3 C 9 H 4 Q 6 6 C 4 H 9 Q 3 Suponha a existência de um método ehdigito(ch caractere) que retorna true caso o caractere seja um digito e false caso contrário.

Estruturas de Dados Deques

Deques Double-ended queue Extensão de filas que permite inserir e remover dados em ambas as extremidades

Deques Uma deque permite várias operações Criar uma deque Inserir um novo item no início Inserir um novo item no final Remover o item do início Remover o item do final Esvaziar Etc.

Deques A implementação de deques também poder ser por meio de vetores ou listas ligadas Na implementação através de listas ligadas, a utilização de uma lista duplamente encadeada torna a implementação mais eficiente Remover o nó do final é mais eficiente em uma lista duplamente encadeada do que em uma lista simplesmente encadeada