Aula 5 e 6 Pilhas e suas Aplicações. prof Leticia Winkler

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

Aula 11 Pilha Dinâmica. prof Leticia Winkler

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

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

ESTRUTURA DE DADOS PILHAS SEQUENCIAIS

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

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

Aula 2 Listas Lineares Sequenciais. prof Leticia Winkler

Estruturas de Dados Filas

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

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

LP II Estrutura de Dados

SCC Algoritmos e Estruturas de Dados I

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

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

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

ESTRUTURA DE DADOS (TCC )

Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler

Estruturas Compostas Parte II

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

Algoritmos e Estruturas de Dados 2007/2008

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

Prof. Jesus José de Oliveira Neto

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

Algoritmos e Estrutura de Dados Aula 08 Pilhas

FICHA 8 PILHAS E FILAS

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

Carlos Eduardo Batista. Centro de Informática - UFPB

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

LP II Estrutura de Dados

Algoritmos e Estruturas de Dados 2005/2006

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

Estrutura de dados - Listas Encadeadas

Algoritmos e Estruturas de Dados I

PCC104 - Projeto e Análise de Algoritmos

Pilhas Acesso. Pilha. Fila. Listas lineares especiais. Pilhas e Filas. Listas lineares especiais mais usuais. Disciplina restrita

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

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

Algoritmos e Estruturas de Dados

Estruturas de Dados Encadeadas

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

Estruturas de Dados Aula 11: TAD Pilha

Filas Exemplo de Aplicação

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

16/11/2015 Lista Tipo de dado Lista - Implementação Lista - Implementação Lista - Implementação 3

Estrutura de Dados: Aula 3 - Linguagem C

Universidade Estadual Paulista Júlio de Mesquita Filho UNESP

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

SCC Algoritmos e Estruturas de Dados I

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

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

Aula 18: Vetores Introdução a Programação Túlio Toffolo & Puca Huachi

EAD PILHA - DEFINIÇÃO

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

INF 1007 Programação II

Revisão de TDA, Pilhas e Filas

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

Alocação Seqüencial VAL MAX TOPO

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

ESTRUTURA DE DADOS LISTAS LINEARES

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

Estrutura de Dados II. Prof. Sérgio Portari

Programação: Vetores

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

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

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

1. Faça um programa que leia uma string digitada pelo usuário e salve em um arquivo em branco.

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

UFSC-CTC-INE INE Estruturas de Dados. Pilhas. Prof. Ronaldo S. Mello 2002/2. Pilha

programas = estrutura de dados + algoritmos

Prova 2 PMR2300 1o. semestre 2015 Prof. Thiago Martins

void push(int i){ if (num<max) vet[num++]=i; else { printf(">>> Erro: overflow na pilha!!!\n"); printf("%d nao foi empilhado!!!

A R R A Y S E E X C E P T I O N S P R O F. M E. H É L I O E S P E R I D I Ã O

CIV 2802 Sistemas Gráficos para Engenharia º Trabalho: Programação básica em C++: Classes

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

Estrutura de Dados: Pilhas. Unidade I:

Estrutura de Dados. Diego Silveira Costa Nascimento

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

Pedro Vasconcelos DCC/FCUP. Programação Funcional 17 a Aula Tipos abstratos

Algoritmos e Estruturas de Dados II IEC013

Programação Funcional 13 a Aula Tipos abstratos

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

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

BCC202 - Estrutura de Dados I

AULA 13 ESTRUTURA DE DADOS

UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS 1º Semestre 2011/2012

Revisão: Tipo Abstrato de Dados Recursividade

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

Pilhas. Profa Morganna Diniz

Tipos abstratos de dados; pilhas e filas

UNIVERSIDADE DA BEIRA INTERIOR

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).

Algoritmos e Estruturas de Dados II IEC013. TAD, Pilhas e Filas. Prof. César Melo

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

UNIVERSIDADE DA BEIRA INTERIOR

1. Listas sequenciais versus listas ligadas. Lista sequencial

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

Informática Parte 18 Prof. Márcio Hunecke

Transcrição:

Aula 5 e 6 Pilhas e suas Aplicações prof Leticia Winkler 1

Definição de Pilha (Stack) São estruturas de dados do tipo LIFO (last-in first-out) - o último elemento a ser inserido, será o primeiro a ser retirado. A manipulação dos elementos é dada apenas por uma das extremidades da lista - topo Para processar o penúltimo item inserido, deve-se remover o último. Exemplos de pilhas são: pilha de pratos, pilha de livros, pilha de cartas de um baralho, etc. Prof. Leticia Winkler 2

Observações sobre Pilha Na implementação de pilha, em apenas uma das extremidades, chamada de topo, é realizada a manipulação dos elementos, em oposição a outra extremidade, chamada de base. Todas as operações em uma pilha podem ser imaginadas como as que ocorre numa pilha de pratos em um restaurante ou como num jogo com as cartas de um baralho Topo Base empilhar e 5 e 4 e 3 e 2 e 1 desempilhar Prof. Leticia Winkler 3

Operações com Pilha Criação da pilha informar a capacidade no caso de pilha por contiguidade (usando vetor); Inicialização da pilha determina o status inicial da pilha, a fim de prepará-la para a inserção de dados. Verificar se a pilha está cheia (no caso de pilha por contiguidade) Empilhamento consiste em inserir um valor no topo da pilha. É preciso verificar previamente se a pilha está cheia. Verificar se a pilha está vazia Desempilhamento consiste em retirar um valor do topo da pilha. É preciso verificar previamente se a pilha está vazia. Mostrar o topo Prof. Leticia Winkler 4

Aplicações Usa-se pilha em aplicações em que os dados são obtidos na ordem inversa àquela em que foram fornecidos. Exemplos: Calculadora para expressões matemáticas; Conversão de número decimal para binário; Retirada de mercadorias de um caminhão de entregas; Mecanismo de fazer/desfazer do Word; Mecanismo de navegação de páginas na Internet (avançar e retornar). Prof. Leticia Winkler 5

Criar a Pilha Supondo uma pilha com capacidade para 5 valores inteiros (5 nós). #define TAM 5 ou int const tam = 5; int pilha[tam]; // pilha propriamente dita ou int pilha[5]; int topo; 4 3 2 1 0 Prof. Leticia Winkler 6

Inicializar a Pilha Determina o status inicial da pilha, a fim de prepará-la para a inserção de dados. Na main: topo = -1; 4 3 2 1 0 Prof. Leticia Winkler 7

Empilhar (Push) Consiste em inserir um valor no topo da pilha, desde que a pilha não esteja cheia. Atualiza a posição do topo.; e Atribui o valor a ser inserido no novo topo Parâmetros: vetor de elementos; topo da pilha; e valor a ser empilhado (inserido) Retorno: Não há Empilhar o 10 Atualiza o topo 4 3 2 1 0 topo Empilhar: 10 4 3 2 1 0 10 topo Prof. Leticia Winkler 8

Empilhar Empilhar 25 Atulaliza o topo 4 3 2 Insere o 25 4 3 2 1 topo 1 25 topo 0 10 0 10 Prof. Leticia Winkler 9

Empilhar Empilhar 32 Empilhar 30 Empilhar: 32 4 Empilhar: 30 4 3 3 30 topo 2 32 topo 2 32 1 25 1 25 0 10 0 10 Prof. Leticia Winkler 10

Código da Função Empilhar void push(int p[], int valor, int &t, int capacidade) { if (capacidade-1 == t) // Testa se a Pilha está cheia cout << "ERRO: Pilha cheia."; else { t++; p[t] = valor; } } Chamada : push(pilha,valor,topo,tamanho); Prof. Leticia Winkler 11

Desempilhar (Pop) Consiste em retirar um valor do topo da pilha e em seguida, ajustar o topo. Só é possível se a pilha não estiver vazia. Parâmetros : vetor de elementos, topo da pilha e valor para armazenar o dado desempilhado. Prof. Leticia Winkler 12

Desempilhar Na realidade a remoção de um elemento da pilha é realizada apenas alterando-se a informação da posição do topo. Desempilhar 4 3 2 1 0 30 32 25 10 topo Prof. Leticia Winkler 13

Código da Função Desempilhar void pop(int p[], int &t) { if (t == -1) { // Testa se a Pilha está vazia cout << "ERRO : Pilha vazia." << endl; return ; // Abandona a funã Ã o } t--; // atualiza o topo } Chamada : pop(pilha, topo); Prof. Leticia Winkler 14

Outras Operações Verificar se a pilha está cheia verifica a posição do topo bool isfull (int p[], int &t, int capacidade) { } return (t == capacidade - 1); Verificar se a pilha está vazia verifica a posição do topo bool isempty (int p[], int &t) { } return (t == -1) ; Prof. Leticia Winkler 15

http://www.cosc.canterbury.ac.nz/mukundan/dsal/stackappl.html Prof. Leticia Winkler 16

Questões de Concurso Prof. Leticia Winkler 17

Questão #1 Prova: FCC - 2009 - TRT - 16ª REGIÃO (MA) - Técnico Judiciário - Tecnologia da Informação Pilha é uma estrutura de dados a) cujo acesso aos seus elementos segue tanto a lógica LIFO quanto a FIFO. b) cujo acesso aos seus elementos ocorre de forma aleatória. c) que pode ser implementada somente por meio de vetores. d) que pode ser implementada somente por meio de listas. e) cujo acesso aos seus elementos segue a lógica LIFO, apenas. Prof. Leticia Winkler 18

Questão #2 CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE CUIABÁ MT. As pilhas são estruturas de dados que possuem critérios para inclusão e remoção de nodos. Sendo assim, analise o trecho do código abaixo considerando os conceitos de pilhas e a linguagem de programação C. 1. #define fim 8 2. #define inicio 0 3. void pop (int p[10], int *fim, int val, int *status) 4. { 5. if (*fim == inicio 1) { 6. *status = 0; 7. } 8. else { 9. val = p[*fim]; 10. (*fim) --; 11. *status = 1; 12. } 13. return val; 14. } Assinale a alternativa incorreta é: a) A função pop desempilha o vetor através do comando contido na linha 10. b) A variável status recebe o valor 0 quando a pilha estiver vazia. c) A função pop é uma implementação de remoção de nodos de uma estrutura LIFO. d) Um elemento contido na pilha só poderá ser retirado se estiver no topo. e) Se a variável fim valer 10, a função pop irá retornar ao valor contido no topo da pilha. Prof. Leticia Winkler 19

Questão #3 BNDS Analista de Sistemas (Desenvolvimento) 2005 - Observe o trecho de código ao lado: Stack é uma estrutura do tipo LIFO (última a entrar, primeira a sair) onde são aplicadas as operações usuais push( ) e pop( ). Existe ainda a operação peek( ) que retorna o elemento no topo da pilha sem removê-lo. A seqüência de valores impressa pelo programa é: (A) 5, 16, 1 (B) 4, 16, 4, 0, 1 (C) 5, 8, 5, 1, 0 (D) 5, 16, 5, 1, 0 (E) 4, 0, 4, 4, 1... int stack[10]; int top = -1; int item1 = 1; int item2 = 0; int item3 = 4; push(stack, top, item2); push(stack, top, item1); push(stack, top, item1 + item3); item2 = peek(stack, top); push(stack, top, item3 * item3); push(stack, top, item2); push(stack, top, 3); item2 = peek(stack, top); pop(stack, top); while (!isempty(stack)) { item1 = pop(stack, top); cout << item1; Prof. }... Leticia Winkler 20

Questão #4 Eletronorte Analista de Sistema 2005... Stack pilha;... push(&pilha, 3); push(&pilha, 4); pop(&pilha); push(&pilha, 5); push(&pilha, 6); pop(&pilha); push(&pilha, 7); push(&pilha, 8); while (true) { cout << pop(&pilha ) << ; }... A saída produzida pelo programa ao lado será: A) 8 7 5 3; B) 5 6 7 8; C) 3 4 5 6 7 8; D) 8 7 6 5 4 3; E) 8 7 6 5. Prof. Leticia Winkler 21

Questão #5 Perito Criminal da Polícia Civil do Estado do Rio de Janeiro Engenharia da Computação e Informática 2008 Quadro I operações básicas operação significado Push(P,x) insere um elemento qualquer x na pilha Pop(P) remove o elemento de topo da pilha Top(P) acessa, sem remover, o elemento de topo da pilha P Quadro II sequência de operações Push(POLICIAL_CIVIL, HARDWARE) Push(POLICIAL_CIVIL, SOFTWARE) POP(POLICIA_CIVIL) Push(POLICIAL_CIVIL, INTERNET) TOP(POLICIA_CIVIL) Push(POLICIA_CIVIL, SEGURANCA) POP(POLICIA_CIVIL) Push(POLICIA_CIVIL, TOP(POLICIA_CIVIL)) Push(POLICIAL_CIVIL, POP(POLICIAL_CIVIL)) Push(POLICIAL_CIVIL, REDES) POP(POLICIA_CIVIL) Push(POLICIA_CIVIL, TOP(POLICIA_CIVIL)) Considere a estrutura de dados PILHA, inicialmente vazia, suportando três operações básicas, conforme definidas no Quadro I e a sequência de operações descritas no Quadro II. Após a execução da última operação Push(POLICIA_CIVIL,TOP(POLICIA_CIVIL)), o elemento de topo da pilha será igual a: (A) REDES. (B) INTERNET. (C) SOFTWARE. (D) SEGURANCA. (E) CRIPTOGRAFIA. Prof. Leticia Winkler 22

Questão #6 VUNESP - 2009 - CETESB - Analista de TI - Sistemas A estrutura de dados do tipo pilha (stack) é um tipo abstrato de dado baseada no princípio a) da indiferença. b) da localidade de referência. c) de dividir para conquistar. d) First In First Out (FIFO). e) Last In First Out (LIFO). Prof. Leticia Winkler 23

Questão #7 UFF - 2009 - UFF - Técnico de Laboratório Informática Na estrutura de dados tipo pilha, há duas operações básicas para empilhamento e desempilhamento. Essas operações são conhecidas como: a) PUSH e PULL; b) PULL e POP; c) HEAP e POP; d) Base e Topo; e) PUSH e POP. Prof. Leticia Winkler 24

Questão #8 CESGRANRIO - 2009 - BNDES - Profissional Básico - Análise de Sistemas - Desenvolvimento Seja S uma pilha inicialmente vazia. Primeiramente, o elemento A é inserido em S. Em seguida, o elemento B, e assim por diante, até a inclusão final do elemento E. Ao término dessas operações, qual elemento estará no topo de S? a) A. b) B. c) C. d) D. e) E Prof. Leticia Winkler 25

Questão #9 ESAF - 2010 - MPOG - Analista de Planejamento e Orçamento - Tecnologia da Informação No contexto de estrutura de dados, uma pilha é a) uma lista do tipo LILO. b) uma lista do tipo FIFO. c) um tipo de lista linear em que as operações de inserção e remoção são realizadas na extremidade denominada topo. d) um tipo de lista linear em que as operações de inserção e remoção são realizadas aleatoriamente. e) um tipo de lista linear em que as operações de inserção são realizadas em uma extremidade e as operações de remoção são realizadas em outra extremidade. Prof. Leticia Winkler 26

Questão #10 CESGRANRIO - 2006 - EPE - Técnico de Nível Superior - Área Tecnologia da Informação A tabela abaixo mostra as operações para a manipulação de uma pilha. Utilizando as definições, a seqüência de instruções ao lado foi implementada para avaliar o resultado de uma expressão, sendo A, B, C, D e E os operandos desta expressão. O resultado da avaliação é acumulado em F. PUSH A PUSH B SUB PUSH C PUSH D PUSH E MPY ADD DEC DIV POP F Com base no que foi exposto acima, se A, B, C, D e E apresentarem, respectivamente, os valores 9, 3, 2, 1 e 1, qual o valor armazenado em F após a execução da instrução POP F?. a) 2 b) 3 c) 4 d) 5 e) 6 Prof. Leticia Winkler 27

Prof. Leticia Winkler 28

Respostas: Q1) Q2) Q3) Q4) Q5) Q6) Q7) Q8) Q9) Q10) E E D A B E E E C B Prof. Leticia Winkler 29

Exercícios 1) Faça um programa em C++ para ler um número inteiro maior que zero, converter este número de decimal para binário, usando pilha e apresentar na tela, o resultado da conversão. 2) Construa um programa em C++ para ler um vetor de caracteres, empilhar os caracteres que são letras em uma pilha P1 e empilhar os que são dígitos em outra pilha P2. Ao final, desempilhe os dados de P2 e em seguida, os de P1, imprimindo-os na tela. DICA : Use as funções isdigit e isalpha declaradas em cctype. Prof. Leticia Winkler 30