Pilhas. Prof. Túlio Toffolo BCC202 Aula 11 Algoritmos e Estruturas de Dados I

Documentos relacionados
BCC202 - Estrutura de Dados I

PCC104 - Projeto e Análise de Algoritmos

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Aula 06: Pilhas

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

Pilhas e Filas. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.2 e 3.3

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

Estruturas de Dados Básicas

Estruturas de Dados Básicas

Livro Projeto de Algoritmos Nívio Ziviani Listas Lineares Capítulo 3 Seção 3.1

Listas (Parte 1) Túlio Toffolo BCC202 Aula 09 Algoritmos e Estruturas de Dados I

Estruturas de Dados Básicas

BCC202 - Estrutura de Dados I

Estruturas de Dados Básicas

BCC202 - Estrutura de Dados I

Estruturas de Dados Aula 11: TAD Pilha

Estruturas de Dados Básicas

Listas Encadeadas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Universidade Estadual Paulista Júlio de Mesquita Filho UNESP

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Aula 07: Filas

Aula 05: Listas Encadeadas. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Estrutura de dados - Listas Encadeadas

Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1

Estrutura de Dados II. Prof. Sérgio Portari

Listas Lineares. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

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

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

INF 1007 Programação II

Lista de Exercícios 04

Listas (Parte 2) Túlio Toffolo BCC202 Aula 10 Algoritmos e Estruturas de Dados I

SCC Algoritmos e Estruturas de Dados I

Introdução a Programação. Tipos Abstratos de Dados Implementando Pilha e Fila

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

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

Tabelas Hash. Prof. Túlio Toffolo BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I

Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo

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

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Estruturas de Dados. Módulo 11 Pilhas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Árvores de Pesquisa (Parte I)

Estruturas de Dados Aula 10: Listas (parte 2) 19/04/2011

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas

INF1007 Programação 2 9 Pilhas. (c) Dept. Informática - PUC-Rio 1

Lista de Exercícios sobre Listas Implementadas por Encadeamento

LISTAS LINEARES. Estrutura de Dados

Aula T13 BCC202 Árvores. Túlio Toffolo

Capítulo 8: Abstrações de dados

Listas ligadas/listas encadeadas

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).

Estruturas de Dados Encadeadas

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

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

Estruturas de Dados Filas

- Estruturas e aplicações

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

Pesquisa em Memória Primária Árvores de Busca. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

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

Pilhas e Filas. Algoritmos e Estruturas de Dados Flavio Figueiredo (

Conceitos. Pilhas e Filas. Conceitos e Implementação em linguagem C. Maria Adriana Vidigal de Lima. Março

Prof. Jesus José de Oliveira Neto

Pilhas. Algoritmos e Estruturas de Dados I. José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Carlos Eduardo Batista. Centro de Informática - UFPB

Algoritmos e Estruturas de Dados II IEC013

ESTRUTURA DE DADOS (TCC )

Listas Lineares Ordenadas

Aula 11 Pilha Dinâmica. prof Leticia Winkler

1. Listas sequenciais versus listas ligadas. Lista sequencial

EPs 1 e 2. EP2: veja. EP1: veja

Árvores de Pesquisa (Parte I)

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior

Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing,

Aula 15: Pesquisa em Memória Primária. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Pesquisa em memória primária: hashing. Algoritmos e Estruturas de Dados II

Aula 24: Ponteiros e Alocação Dinâmica

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

INF 1620 P2-01/11/03 Questão 1 Nome:

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

08/08/2011. Pilha. SCC0202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Pilha. O que é? Para que serve?

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

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

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

Filas Exemplo de Aplicação

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

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

Algoritmos e Estruturas de Dados I

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

Árvores de Pesquisa (Parte II)

Fontes Bibliográficas. Estruturas de Dados Aula 15: Árvores. Livros:

Estruturas de Dados. Túlio Toffolo BCC402 Aula 02 Algoritmos e Programação Avançada

FILAS. As coisas de que uma fila é feita serão chamadas itens. Os itens podem ser números, strings, structs, etc., etc.

Aula 28: Arquivos de texto

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

Tipos abstratos de dados; pilhas e filas

Estruturas de Dados Aula 12: Outras Implementações de Listas 18/04/2011

Lista Encadeada (Linked List)

Árvores. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Transcrição:

Pilhas Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 11 Algoritmos e Estruturas de Dados I

O que é uma pilha? 4 Pilha 3 4 1 2 3 2 1

TAD Pilha Tipo Abstrato de dados com a seguinte característica: O último elemento a ser inserido é o primeiro a ser retirado/ removido (LIFO Last in First Out) TAD conhecida como stack Analogia: pilha de pratos, livros, etc. Usos: Chamada de subprogramas, avalição de expressões aritméticas, etc.

TAD Pilha Operações: 1. Pilha_Inicia(Pilha). Inicia uma pilha vazia. 2. Pilha_EhVazia(Pilha). Retorna 1 se a pilha está vazia; caso contrário, retorna 0. 3. Pilha_Push(Pilha, x). Empilha o item x no topo da pilha. 4. Pilha_Pop(Pilha, x). Desempilha o item x do topo da pilha, retirando-o da pilha. 5. Pilha_Tamanho(Pilha). Esta função retorna o número de itens da pilha.

TAD Pilha Existem várias opções de estruturas de dados que podem ser usadas para representar pilhas. As duas representações mais utilizadas são: Por meio de arrays Por meio de ponteiros 5

PILHAS POR MEIO DE ARRAYS

Implementação de Pilhas por Arrays Os itens da pilha são armazenados em posições contíguas de memória. Como as inserções e as retiradas ocorrem no topo da pilha, um campo chamado topo é utilizado para controlar a posição do item no topo da pilha.

PILHAS POR MEIO DE PONTEIROS

Estrutura da Pilha por meio de Ponteiros Criar um campo tamanho evita a contagem do número de itens na função tamanho. Cada célula de uma pilha contém um item da pilha e um apontador para outra célula. O registro (struct) TPilha contém um apontador para o topo da pilha (célula cabeça) e um apontador para o fundo da pilha. Funcionam como início e fim de uma lista

Cria Pilha Vazia (usando célula cabeça) Cabeça NULL NULL Fundo 10

Inserção de Elementos na Pilha NULL Fundo Opção única de posição onde pode inserir Topo da pilha (ou seja, primeira posição) 11

Inserção de um elemento da Pilha NULL NULL Último 12

Retirada de Elementos na Pilha NULL Último Opção única de posição onde pode retirar Topo da pilha (ou seja, primeira posição) 13

Retirada de um elemento da Pilha NULL Último 14

EXEMPLO DE USO DE PILHA

Exemplo: Editor de Textos (ET) Vamos escrever um Editor de Texto (ET) que aceite os comandos: Cancela caracter Cancela linha Imprime linha O ET deverá ler um caractere de cada vez do texto de entrada e produzir a impressão linha a linha, cada linha contendo no máximo 70 caracteres de impressão. O ET deverá utilizar o tipo abstrato de dados TPilha definido anteriormente.

Exemplo: Editor de Textos (ET) # : cancelar caractere anterior na linha sendo editada. Ex.: UFM##FOB#P DCC##ECOM! \ : cancela todos os caracteres anteriores na linha sendo editada. * : salta a linha.! : Imprime os caracteres que pertencem à linha sendo editada, iniciando uma nova linha de impressão a partir do caractere imediatamente seguinte ao caractere saltalinha.

Sugestão de Texto para Testar o ET Este et# um teste para o ET, o extraterrestre em C.*Acabamos de testar a capacidade de o ET saltar de linha, utilizando seus poderes extras (cuidado, pois agora vamos estourar a capacidade máxima da linha de impressão, que é de 70 caracteres.)*o k#cut#rso dh#e Estruturas de Dados et# h#um cuu#rsh#o #x# x?*#?#+.* Como et# bom n#nt#ao### r#ess#tt#ar mb#aa#triz#cull#ado nn#x#ele\ Sera que este funciona\\\? O sinal? não### deve ficar!

ET - Implementação Este programa utiliza um tipo abstrato de dados sem conhecer detalhes de sua implementação. A implementação do TAD Pilha que utiliza arranjo pode ser substituída pela implementação que utiliza apontadores sem causar impacto no programa

ET - Implementação int main(int argc, char* argv[]) { TPilha Pilha; TItem x; TPilha_Inicia(&Pilha); x.chave = getchar(); while (x.chave!= MarcaEof) { if (x.chave == CancelaCaractere) { if (!TPilha_EhVazia(&Pilha)) TPilha_Pop(&Pilha, &x); } else if (x.chave == CancelaLinha) TPilha_Inicia(&Pilha); else if (x.chave == SaltaLinha) TPilha_Imprime(&Pilha); else if (TPilha_Tamanho(Pilha) == MaxTam) TPilha_Imprime(&Pilha); else TPilha_Push(&Pilha, x); x.chave = getchar(); } if (!TPilha_EhVazia(&Pilha)) TPilha_Imprime(&Pilha); return 0; }

ET - Implementação void PImprime(TipoPilha* ppilha) { TPilha Pilhaux; TItem x; TPilha_Inicia(&Pilhaux); while (!TPilha_EhVazia(pPilha)) { TPilha_Pop(pPilha, &x); TPilha_Push(&Pilhaux, x); } while (!TPilha_EhVazia(&Pilhaux)) { TPilha_Pop(&Pilhaux, &x); putchar(x.chave); } putchar('\n'); }

Perguntas?

Exercício Seja TLista o TAD Lista que implementa as seguintes funções: void TLista_Inicia(TLista *plista); int TLista_EhVazia(TLista *plista); int TLista_InsereP(TLista *plista, int p, TItem x); int TLista_RetiraP(TLista *plista, int p, TItem *px); int TLista_Tamanho(TLista *plista); Suponha ainda que você tem conhecimento de que TLista é uma lista encadeada Implemente a TAD TPilha utilizando um TLista