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



Documentos relacionados
Filas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

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

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

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

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

INF 1007 Programação II

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

Métodos Computacionais. Fila

PROGRAMAÇÃO II 3. FILA DINÂMICA

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

Prof. Jesus José de Oliveira Neto

Pilhas. Profa Morganna Diniz

PROGRAMAÇÃO II 3. PILHA DINÂMICA

INF 1007 Programação II

Trabalho 3: Agenda de Tarefas

INF 1007 Programação II

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

INF 1007 Programação II

/*(Atenção: Em se tratando de uma lista estaticamente alocada, temos utilizado a estratégia de passa o tamanho máximo do vetor.)*/

Aula 3 Alocação Dinâmica

A Pilha. Aula 02. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

insfcanceof new public switch transient while byte continue extends for int null

Complexidade de Algoritmos

Filas: conceitos e implementações

Listas Duplamente Encadeadas

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

Estruturas de Dados Pilhas, Filas e Deques

ESTRUTURA DE DADOS PILHA

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

Estrutura de Dados Pilha (Stack)

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

FACULDADE DE TECNOLOGIA SENAC GOIÁS ADELTON HENRIQUE ABISHAI LEMES BORGES NETO HENRIQUE FERREIRA DA SILVA

Linguagem C: Árvores Binarias

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

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

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

Linguagem C Funções definidas pelo usuário. Lógica de Programação

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

Fundamentos de Programação

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO

DAS5102 Fundamentos da Estrutura da Informação

Instituto de C. Filas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

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

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

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

Pilhas Filas e Listas

Computação II Orientação a Objetos

Projeto de sistemas em Java. Algoritmos e Programação I. Classe SimulacaoFuncionario. Classe SimulacaoFuncionario. Classe SimulacaoFuncionario

Introdução à Programação. Armazenamento de Grande Quantidade de Informação Usando Vetores

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

Programação de Computadores - I. Profª Beatriz Profº Israel

Desenvolvimento OO com Java Orientação a objetos básica

Templates e Pilhas. 1. Introdução

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

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

INF1007: Programação 2 9 Tipos Abstratos de Dados. (c) Dept. Informática - PUC-Rio 1

Métodos Computacionais. Árvores

INF 1010 Estruturas de Dados Avançadas

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

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE.

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

Figura 13.1: Um exemplo de árvore de diretório.

Estruturas de Dados com Jogos. Capítulo 1 Tipos Abstratos de Dados

Conversão de Tipos e Arrays

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

Programação por Objectos. Java

Lista restrita onde as operações de inserção e retirada são feitas nas extremidades. Deque (fila de final duplo).

TCC Prof.: Leandro A. F. Fernandes Conteúdo: Tipos Genéricos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível.

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

DESENVOLVIMENTO DE SOFTWARE

Tópicos Avançados em Estrutura de Dados 6º Período Ciência da Computação Prof. Jean Carlos Hennrichs. Revisão. 2. Lista Estática Duplamente Encadeada

Programa de Computador que funciona em Rede

struct arv { char info; struct arv* esq; struct arv* dir; };

INF 1007 Programação II

INF 1620 P2-23/10/04 Questão 1 Nome:

2. O gerador de código estende DepthFirstAdapter implementando a interpretação que gerará código Jasmin a partir de Smallpascal.

Java Como Programar, 8/E

Algoritmos e Programação II. Sobrecarga

Tipos de Dado Abstrato: Listas, Filas e Pilhas

Utilização do Appia. Tolerância a Faltas Distribuída 2003/04. Nuno Carvalho nunomrc@di.fc.ul.pt

ESTRUTURAS DE DADOS E ALGORITMOS II ANTONIO RAMOS DE CARVALHO JÚNIOR PILHAS

Estruturas de Dados Filas

Universidade Estadual Paulista Júlio de Mesquita Filho UNESP

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1

Algoritmos e Programação

Curso de C. Memória Dinâmica 17/05/ :33 1

Introdução a POO. Introdução a Linguagem C++ e POO

Programação por Objectos. Java

Design Patterns (Factory Method, Prototype, Singleton)

Estruturas de Dados Aula 11: TAD Pilha

Programação Orientada a Objetos II JAVA Décima Aula. Prof. Rogério Albuquerque de Almeida

Transcrição:

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

Tópicos Principais Introdução Interface do tipo pilha Exemplo de uso: verificação de expressões Implementação de pilha com lista encadeada Pilhas Tópicos Principais Faculdade de Tecnologia Bandeirantes 2

Introdução - Pilha novo elemento é inserido no topo e acesso é apenas ao topo o primeiro que sai é o último que entrou (LIFO - last in, first out) operações básicas: empilhar (push) um novo elemento, inserindo-o no topo desempilhar (pop) um elemento, removendo-o do topo Pilhas Introdução - Pilha Faculdade de Tecnologia Bandeirantes 3

Introdução - Pilha Pilhas Introdução - Pilha Faculdade de Tecnologia Bandeirantes 4

Interface do tipo Pilha public interface Pilha cria() : aloca dinâmicamente a estrutura da pilha; inicializa seus campos e retorna seu objeto push(v) e pop(): inserem e retiram, respectivamente um valor na pilha vazia(): informa se a pilha está ou não vazia libera(): destrói a pilha, liberando toda a memória usada pela estrutura. Pilhas Interface do tipo Pilha Faculdade de Tecnologia Bandeirantes 5

Interface do tipo pilha 1 public interface Pilha { 2 public Pilha cria(); 3 public void push(float v); 4 public float pop(); 5 public boolean vazia(); 6 public void libera(); 7 } Pilhas Interface do tipo pilha Faculdade de Tecnologia Bandeirantes 6

Implementação de pilha com vetor 1 public class PilhaVetor implements Pilha{ 2 3 /*numero maximo de elementos*/ 4 private final static int N = 50; 5 private int count = -1; 6 private float[] elementos; 7 8 public Pilha cria() { 9 this.elementos = new float[n]; 10 return this; 11 } 12 13 public void push(float v) { 14 if(this.count >= N-1){ 15 System.out.println("Capacidade da pilha estorou - " + 16 "finalizando programa"); 17 System.exit(1); 18 } 19 /*inseri elemento na proxima posicao livre*/ 20 this.elementos[count+1] = v; 21 this.count++; 22 } Pilhas Implementação de pilha com vetor Faculdade de Tecnologia Bandeirantes 7

1 2 public float pop() { 3 float v; 4 if(this.vazia()){ 5 System.out.println("Pilha vazia - " + 6 "finalizando o programa"); 7 System.exit(1); 8 } 9 /*retira elemento do topo*/ 10 v = this.elementos[count]; 11 this.count--; 12 return v; 13 } 14 15 public boolean vazia() { 16 return (this.count <= -1); 17 } 18 19 public void libera() { 20 /*nao libera de fato, apenas reinicializa*/ 21 this.elementos = new float[n]; 22 this.count = -1; 23 } 24 } Pilhas Implementação de pilha com vetor Faculdade de Tecnologia Bandeirantes 8

Exemplo de uso Verificação de expressões matemáticas Considerando cadeias de caracteres com expressões matemáticas que podem conter termos entre parênteses, colchetes ou chaves, ou seja, entre os caracteres ( e ), ou [ e ], ou { e }; função que retorna 1, se os parênteses, colchetes e chaves de uma expressão aritmética exp são abertos e fechados corretamente, ou 0 caso contrário; Pilhas Exemplo de uso Faculdade de Tecnologia Bandeirantes 9

Para a expressão 2 {3 + 4 (2 + 5[2 + 3])} retornaria 1; Para a expressão 2 {3 + 4 (2 + 5[2 + 3]) retornaria 0; Protótipo do método: verificafechamento(char[] s) Pilhas Exemplo de uso Faculdade de Tecnologia Bandeirantes 10

Exemplo de uso Verificação de expressões matemáticas: a estratégia é percorrer a expressão da esquerda para a direita: Se encontra (, [ ou {, empilha; Se encontra ), ] ou }, desempilha e verifica o elemento no topo da pilha, que deve ser o caractere correspondente; Ao final, a pilha deve estar vazia. Pilhas Exemplo de uso Faculdade de Tecnologia Bandeirantes 11

Exemplo de uso 1 private char fecho(char c){ 2 if(c== ] ) return [ ; 3 if(c== } ) return { ; 4 if(c== ) ) return ( ; 5 return x ; 6 } 7 8 private boolean verificafechamento(char[] s){ 9 Pilha p = new PilhaVetorChar(); p.cria(); 10 for(int i=0; i<s.length; i++){ 11 if(s[i]== ( s[i]== { s[i]== [ ){ 12 p.push(s[i]); 13 }else if(s[i]== ) s[i]== } s[i]== ] ){ 14 if(p.vazia()) return false; 15 if(p.pop()!=fecho(s[i])) return false; 16 } 17 } 18 if(!p.vazia()) return false; 19 p.libera(); 20 return true; 21 } Pilhas Exemplo de uso Faculdade de Tecnologia Bandeirantes 12

Implementação de pilha com lista 1 public class PilhaLista implements Pilha{ 2 private NodoPilha prim; 3 public Pilha cria() {return null;} 4 public void push(float v) {} 5 public float pop() {return 0;} 6 public boolean vazia() {return false;} 7 public void libera() {} 8 } 9 class NodoPilha{ 10 private float v; 11 private Nodo prox; 12 } Pilhas Implementação de pilha com lista Faculdade de Tecnologia Bandeirantes 13

Implementação de pilha com lista 1 public class PilhaLista implements Pilha{ 2 private NodoPilha prim; 3 4 public Pilha cria() { 5 this.prim = null; 6 return this; 7 } 8 9 public boolean vazia() { 10 return (this.prim == null); 11 } 12 13 public void libera() { 14 this.prim = null; 15 } 16 } Pilhas Implementação de pilha com lista Faculdade de Tecnologia Bandeirantes 14

Implementação de pilha com lista (push e pop) 1 2 public void push(float v) { 3 NodoPilha novo = new NodoPilha(); 4 novo.setinfo(v); 5 novo.setprox(prim); 6 prim = novo; 7 } 8 9 public float pop() { 10 NodoPilha n; 11 if(vazia()){ 12 System.out.println("Pilha vazia"); 13 System.exit(1); 14 } 15 n = this.prim; 16 prim = n.getprox(); 17 return n.getinfo(); 18 } 19 } Pilhas Implementação de pilha com lista (push e pop) Faculdade de Tecnologia Bandeirantes 15

Resumo - Pilha push: insere novo elemento no topo da pilha pop: remove o elemento do topo da pilha Pilhas Resumo - Pilha Faculdade de Tecnologia Bandeirantes 16

Material de consulta Capítulo 11 do livro: Introdução a Estruturas de Dados do Waldemar Celes, Renato Cerqueira e José Lucas Rangel. Pilhas Material de consulta Faculdade de Tecnologia Bandeirantes 17

Material de referência Capítulo 11 do livro: Introdução a Estruturas de Dados do Waldemar Celes, Renato Cerqueira e José Lucas Rangel. Imagens retiradas do site da disciplina de Programação II da PUC do Rio de Janeiro. http://www.inf.puc-rio.br/ inf1007/. Pilhas Material de referência Faculdade de Tecnologia Bandeirantes 18