Professor Sérgio Furgeri. Pilhas. O primeiro a entrar é o último a sair e o último a entrar o primeiro a sair (LIFO Last-In First-Out).



Documentos relacionados
Curso : Tecnologia em Desenvolvimento de Sistemas - AEMS

Avaliação de Expressões

1a) QUESTÃO: ciclos 2a) QUESTÃO: estado inicial indefinidamente travar 4a) QUESTÃO: Anel 1ª) Questão

ESTRUTURA DE DADOS PILHA

PROVA MATRIZ DE MATEMÁTICA EFOMM-2009

Curso : Tecnologia em Desenvolvimento de Sistemas - AEMS Série : 3 º Período - 1 º Semestre de 2011 Professora : Elzi Ap. Gil

PROGRAMAÇÃO II 3. PILHA DINÂMICA

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

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

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

Listas Duplamente Encadeadas

Zelio Logic 2 Interface de comunicação SR2COM01 Ajuda para a utilização da pasta de exploração 11/2005

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

Análise de Algoritmos Gabarito da Primeira Prova

Manual de Utilização do UpLoad BR

PROGRAMAÇÃO II 4. ÁRVORE

Variáveis Compostas Heterogêneas. Variável Composta Heterogênea. Variável Composta Heterogênea

02. Resolva o sistema de equações, onde x R. x x Solução: (1 3 1) Faça 3x + 1 = y 2, daí: 02. Resolva o sistema de equações, onde x R e y R.

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

4. APLICAÇÃO DA PROTEÇÃO DIFERENCIAL À PROTEÇÃO DE TRANSFORMADORES DE POTÊNCIA

Revisão: Tipo Abstrato de Dados Recursividade

Manual de Utilização do Hosp

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

C Sistema destinado à preparação para Concursos Públicos e Aprimoramento Profissional via INTERNET RACIOCÍNIO LÓGICO

Curso de Data Mining

Simulado 7: matrizes, determ. e sistemas lineares

Tipo de Dados Abstractos: Pilha (stack)

9 Implementação de Relógio Digital (State Charts)

Pilhas. Profa Morganna Diniz

PROGRAMAÇÃO II 3. FILA DINÂMICA

2.) O grafo de interseção de uma coleção de conjuntos A1;A2;...;An é o grafo que tem um vértice para cada um dos conjuntos da coleção e

Filas. A ordem de saída corresponde diretamente à ordem de entrada dos elementos. Fila de caixa bancário

Alocação sequencial - Pilhas

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

IFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01

RESOLUÇÃO DA PROVA DE MATEMÁTICA UNICAMP-FASE RESOLUÇÃO: PROFA. MARIA ANTÔNIA C. GOUVEIA

1 Áreas de figuras planas

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

Árvores e Árvores Binárias

Programação II. Pilhas (stacks) Bruno Feijó Dept. de Informática, PUC-Rio

Associação Catarinense das Fundações Educacionais ACAFE PARECER DOS RECURSOS

1. Estrutura de seleção. Seleção: algumas etapas (passos) do algoritmo são executadas dependendo do resultado de uma condição

Manual de Utilização do Hosp

Ordenação dos elementos de um vector

Algoritmos e Estruturas de Dados I

Compiladores. Geração de Código Intermediário

Estrutura de Dados Pilha (Stack)

Listas Lineares. Fundamentos

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

Representação de Algoritmos - Linguagens de Programação

Busca. Pesquisa sequencial

Compiladores. Exemplo First/Follow. proc Follow(B N) Gramática LL(1) proc First(α: string of symbols) Observações First/Follow

HALLIDAY, RESNICK, WALKER, FUNDAMENTOS DE FÍSICA, 8.ED., LTC, RIO DE JANEIRO, FÍSICA 1 CAPÍTULO 3 VETORES

Medidas de Associação.

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

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

Conjunto (set) O tipo estruturado set representa, em Pascal, um conjunto de objectos de um dado tipo;

Testes Baseados na Implementação. (fluxo de controle) Baseado em notas de aula da profa. Eliane Martins

Analisadores Sintáticos. Análise Recursiva com Retrocesso. Análise Recursiva Preditiva. Análise Recursiva Preditiva 05/04/2010

Exame II. Conhecimentos Básicos Processuais e do Programa SISAAE CURSO DE EMPREGADOS FORENSES DE AGENTE DE EXECUÇÃO. A preencher pelo formando:

Pedro Vasconcelos DCC/FCUP. Programação Funcional 14 a Aula Tipos abstratos de dados

o aparelho e verifique os componentes Preto Amarelo Ciano Magenta Cartuchos de tinta iniciais

COMPENSAÇÃO ANGULAR E REMOÇÃO DA COMPONENTE DE SEQÜÊNCIA ZERO NA PROTEÇÃO DIFERENCIAL

1) Digitar o código-fonte no editor do compilador Turbo Pascal para windows, exatamente como apresentado a seguir:

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados

RESOLUÇÃO DA PROVA DE MATEMÁTICA DA FUVEST FASE 1. POR PROFA. MARIA ANTÔNIA CONCEICÃO GOUVEIA.

ntexto finição presentação áfica ilização TempMed(input,output); Var Var Begin Begin readln(t1); readln(t1); readln(t2); readln(t2);

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

ESTRUTURAS DE DADOS AVANÇADAS (INF 1010) (a) Seja um TAD definido por uma lista circular implementada em um vetor.

Propriedades das Linguagens Regulares

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

Aula. Transformações lineares hlcs

OBI2015 Caderno de Soluções

DAS5102 Fundamentos da Estrutura da Informação

Pilhas Filas e Listas

c) S = S = log 4 (log 3 9) + log 2 (log 81 3) + log 0,8 (log 16 32) 8. Calcule:

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

Marcone Jamilson Freitas Souza. Departamento de Computação. Programa de Pós-Graduação em Ciência da Computação

Busca Digital (Trie e Árvore Patrícia) Estrutura de Dados II Jairo Francisco de Souza

ESCOLA SECUNDÁRIA COM 3º CICLO D. DINIS 12º ANO DE ESCOLARIDADE DE MATEMÁTICA A Tema II Introdução ao Cálculo Diferencial II

Intervalo Encapsulador para Probabilidades Reais de Variáveis Aleatórias Contínuas Unidimensionais

ARQUIVOS. Os arquivos criados em meios magnéticos poderão ser acessados para leitura e escrita na forma seqüencial, direta ou indexada.

Dispositivos de Entrada e Saída

Prova elaborada pelo prof. Octamar Marques. Resolução da profa. Maria Antônia Conceição Gouveia.

Degeneração. Exercício 1: Resolva o seguinte problema pelo método das duas fases: sujeito a

VETORES. Lista de Exercícios Vetores e Matrizes Prof: Yuri Frota

MICROECONOMIA TÓPICOS DE RESOLUÇÃO

2ª Lista de Exercícios

PROG. DE COMPUTADORES II SI Arquivos

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

Python: Comandos Básicos. Claudio Esperança

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

MATEMÁTICA. Questões de 01 a 12

Estrutura de Dados Básica

2 Patamar de Carga de Energia

26/05/2010. Como funciona um computador simples. Memória. Executando um programa. Como funciona um computador? Z = a+b-c

Cinemática de uma Partícula Cap. 12

Transcrição:

Pilhs Pilhs Pilh é um tipo e list one tos s operções e inserção e remoção são feits n mesm extremie (Topo). O primeiro entrr é o último sir e o último entrr o primeiro sir (LIFO Lst-In First-Out). Trt-se e um estrutur inâmi (poe umentr ou iminuir urnte existêni). Exemplos Físios: Gurnpo o topo Entr Si Topo Um pilh e prtos mol Um port-gurnpos Suport três operções ásis: Top (topo) ess o elemento o topo. Push (empure) insere um elemento no topo. Pop (slte) remove um elemento o topo. Exemplo e Instruções Top(P) ess o elemento lolizo no topo Pilh P. Pop(P) remove e retorn o elemento posiiono no topo Pilh P (iminui o tmnho pilh). Push(P, X) resent o elemento X no topo Pilh P (ument o tmnho pilh). Págin 1

Pilhs Exemplo o uso s instruções Pilh (representção liner). Operção Esto Pilh Resulto ----------------- P:[ ] --------------- Push(P, ) P:[ ] --------------- Push(P, ) P:[, ] --------------- Push(P, ) P:[,, ] --------------- Pop(P) P:[, ] Pop(P) P:[ ] Push(P, ) P:[, ] --------------- Push(P, e) P:[ e,, ] --------------- Top(P, ) P:[ e,, ] e Pop(P, ) P:[, ] e Pop(P, ) P:[ ] Representção gráfi s Pilhs n topo P:[ n, n 1,..., 2, 1 ] n - 1... 2 1 se Exemplos e operções om Pilh e su representção gráfi. Push(P, ) Push(P, ) Push(P, ) Pop(P) Pop(P) e Push(P, ) Push(P, e) Pop(P) Pop(P) Pop(P) Págin 2

Pilhs Vntgens representção Gráfi - Gráfios são interpretos mis rpimente. - É mis efiiente, pois sugere que nenhum elemento preis ser esloo urnte inserção ou remoção. Limites Pilh No muno rel um pilh é limit pelo hão e pelo teto. * Não é possível inserir elementos infinitmente. * Não é possível remover elementos infinitmente. No omputor os limites pilh se refere quntie e memóri us pr representá-l. Operções Esseniis pr um Pilh Init: iniiliz um pilh no esto vzi ; Init(P) IsEmpty: verifi se pilh está vzi; IsEmpty(P) IsFull: verifi se pilh está hei. IsFull(P) Exemplo em Psl o uso e Pilhs. Progrm pr onverter eiml em inário progrm De_Bin; uses Pilhs; vr P: Pilh; x, n: integer; writeln ( Digite um inteiro eiml positivo: ); reln (n); Init(P); {torn pilh vzi} repet x:= n mo 2; Push (P, x); n:= n iv 2; until n=0; {lul o resto} {empilh o resto} (lul quoiente) {quoiente 0, pár} write ( Corresponente inário: ); while not IsEmpty(P) o x:= Pop(P); write(x); en. {pilh vzi, pár} {esempilh o resto} {imprime o resto} Págin 3

Pilhs Pilhs no ontrole e hms e retornos rotins 1. progrm Pilhs; 2. vr 3. 4. proeure um; 5. 6. writeln( Um ); 7. ois; 8. 9. 10. proeure ois; 11. 12. writeln( Dois ); 13. tres; 14. 15. 16. proeure tres; 17. 18. writeln( Três ); 19. 20. 21. 22. um; 23. ois; 24. tres; 25. en. Seqüêni e linhs rmzenos n Pilh: 14 8 8 8 14 23 23 23 23 23 24 24 24 25 Exeríios 1. Mostre situção pilh P, iniilmente vzi, pós exeução e um s operções seguir: Push (P, ); Push (P, ); Push (P, ); Push (P, Top (P)); Push (P, Pop (P)); Pop (P); Push (P, e); Pop (P); Págin 4

Pilhs 1º Resolução (vertil) 2º Resolução (horizontl) Push (P, ); Push (P, ); Push (P, Pop (P)); Push (P, ); Push (P, ); Push (P, ); Pop (P); Push (P, Top (P)); Push (P, ); Push (P, Pop (P)); Push (P, e); e Pop (P); Push (P, Top (P)); e e Push (P, ); e Push (P, Top (P)); Pop (P); 2. Usno um pilh, esrev um progrm pr ler um frse e imprimi-l e trás pr frente (om s letrs invertis omo um espelho). Págin 5

Pilhs progrm Inverte; uses Pilhs; vr P: Pilh; x, n: integer; f:string; writeln ('Entre om um frse: '); reln (f); Init(P); {torn pilh vzi} for n:=1 to length(f) o push(p, f[n]); while not IsEmpty(P) o {pilh vzi, pr} write(pop(p)); en. 3. Esrev um rotin que us um pilh pr verifir se um ei e rteres é uo não plínrom. Exemplo: suinoonius é um plvr plínrom. progrm Plinrom; uses Pilhs; vr E, S: string; i: integer; P: Pinh; writeln( Frse: ); reln(e); {otém frse norml} Init(P); for i:=1 to length(e) o Push(P,S[i]); {põe rteres n pilh} S:= ; while not IsEmpty(P) o {ri frse inverti} S:=S+Pop(P); if E=S then writeln( A frse é plínrom ); writeln( A frse não é plínrom ); en. Este Exeríio exemplifi função ási e um pilh: rir funções! Vemos in que função IsEmpty(), em onjunto omo omno while, é iel pr oifir um looping que esvzi pilh, e que o operor +, em Psl, poe ser uso pr nexr um rtere o finl e um ei (ou pr ontenr us eis quisquer!). 4. Consierno s ilustrções seguir, mostre sequêni e operções Push e Pop que evem ser relizs sore s pilhs X, Y e Z pr que, prtino o esto iniil, possmos hegr o esto finl. Págin 6

Pilhs ) (X) (Y) (Z) esto iniil (X) (Y) (Z) esto finl ) 1 8 4 4 2 1 8 3 3 2 (X) (Y) (Z) (X) (Y) (Z) esto iniil esto finl Resolução A Push(Y, Pop(X)) Push(Y, Pop(X)) Push(X, Pop(Y)) Push(Z, Pop(Y)) Resolução B Push(Y, Pop(X)) Push(Y, Pop(X)) Push(Y, Pop(X)) Push(X, Pop(Y)) Push(X, Pop(Y)) Push(Z, Pop(Y)) 5. Esquemtize situção pilh e ontrole e progrm, em momento urnte exeução, pr os progrms seguir: ) routine A 1 print A 2 ll B 3 return routine B 4 ll C 5 ll D 6 return routine C 7 ll D 8 print C 9 return routine D 10 print D 11 return Págin 7

Pilhs ) routine A 1 print A 2 ll B 3 return routine B 4 print B 5 ll C 6 return routine C 7 print C 8 ll B 9 return Resolução A Resolução B P: [ ] P: [3] P: [5,3] P: [8,5,3] P: [5,3] P: [3] P: [6,3] P: [3] P: [ ] P: [] P: [3] P: [6,3] P: [9,6,3] P: [6,9,6,3] P: [9,6,9,6,3] Implementção e Pilhs em Psl Crterístis Pilh: os elementos são rmzenos em seqüêni. inlusão e exlusão não requer movimentção e os. Por esss rterístis loção sequenil é propri. Pr tl poem ser usos: Vetor: rmzen os elementos Pilh. Ínie: permite o esso os elementos. Pr rir um pilh poe ser us estrutur RECORD: 1. onst MAX = 50; 2. type Elem = hr; 3. Pilh = reor 4. topo: integer; 5. memo: rry[1..max] of Elem; 6. 7. vr P: Pilh; Págin 8

Pilhs Exemplo e rmzenmento Pilh P[,, ] P.memo rmzen os elementos pilh P: 3... 1 2 3 4 5 6 7... MAX Bse P.topo ini posição o último elemento inserio Algoritmos pr Mnipulção Pilh ) Iniilizção Pilh proeure Init(vr P:Pilh); P.topo:= 0; Consierções: Não é neessário triuir vlores iniiis os elementos o vetor o iniilizr pilh (irrelevnte). Como o vetor possui elementos entre 1..MAX, não poe hver onteúo n posição 0. P.memo rmzen vlores inefinios P: Φ??????...?? P.topo mntém o ínie o último elemento inserio. O rgumento P, reeio pel rotin Init, é pssgem por referêni (possiilit que qulquer pilh sej iniiliz, inepenentemente e seu nome). ) Limites Pilh 1 2 3 4 5 6 7... MAX P.topo om vlor Φ ini que pilh está vzi, pois não há nenhum elemento ness posição (Pilh vzi P:[ ]). funtion IsEmpty(vr P:Pilh): oolen; if P.topo= 0 then IsEmpty:= true IsEmpty:= flse; Verifi o hão (Topo=0) Págin 9

Pilhs funtion IsFull(vr P:Pilh): oolen; if P.topo = mx then IsFull:= true IsFull:= flse; Verifi o hão (Topo=0) Consierções Por que usr função no lugr e proeimento? Quno Pilh está vzi? Quno Pilh está hei? A pssgem por referêni é, ms não origtóri, um vez que não existe neessie e se lterr o vlor Pilh. Entretnto, não é neessário rir um nov vriável pr opir pilh n memóri (qunto > MAX > Tempo) ) Inserino elementos n Pilh. proeure Push(vr P:Pilh; x:elem); if not IsFull(P) then P.topo:= P.topo + 1; P.memo[P.topo]:= x; en writeln( Stk Overflow! ); Consierções: Existe espço? Se não, oorre Stk Overflow. Inserir o novo elemento no topo. Inrementr o vlor o topo. IsFull (P) verifi se há espço n pilh (1) P.topo := P.topo + 1 lter posição o topo pilh (2) Pssos ásios pr inserir um elemento n pilh P.memo [ P.topo ] := x rmzen o elemento (3) Págin 10

Pilhs ) Retirno elementos Pilh. proeure Pop(vr P:Pilh):Elem; if not IsEmpty (P) then Pop := P.memo [P.topo]; P.topo:= P.topo - 1; en writeln( Stk Overflow! ); Consierções: A Pilh está vzi? Remover sempre o topo. Retornr o elemento e erementro topo. Ao tentr retirr um elemento om Pilh vzi oorre Stk Unerflow. A remoção é pens lógi. IsEmpty (P) verifi se há elementos n pilh (1) e) Conheeno o elemento o topo funtion Top(vr P:Pilh):Elem; if not IsEmpty(P) then Top:= P.memo[P.topo] writeln ( Stk Unerflow ); Consierções: Não lter o esto Pilh. Retorn o elemento o topo. P.topo := P.topo + 1 lter posição o topo pilh (2) Pssos ásios pr remover um elemento pilh P.memo [ P.topo ] := x rmzen o elemento (3) Unit Pilhs unit Pilhs; interfe Págin 11

Pilhs onst mx = 50; type Elem = hr; Pilh = reor topo: integer; memo: rry[1..mx] of Elem; proeure Init(vr P:Pilh); funtion IsEmpty(vr P:Pilh):oolen; funtion IsFull(vr P:Pilh):oolen; proeure Push(vr P:Pilh; x:elem); funtion Pop(vr P:Pilh):Elem; funtion Top(vr P:Pilh):Elem; implementtion proeure Init(vr P:Pilh); P.topo: = 0; funtion IsEmpty(vr P:Pilh):oolen; if P.topo= 0 then IsEmpty:= true IsEmpty:= flse; funtion IsFull(vr P:Pilh):oolen; if P.topo= mx then IsFull:= true IsFull:= flse; proeure Push(vr P:Pilh; x:elem); if not IsFull(P) then P.topo:= P.topo + 1; P.memo[P.topo]:= x; en writeln ( Stk Overflow! ); proeure Pop(vr P:Pilh):Elem; if not IsEmpty(P) then Pop:= P.memo [P.topo]; P.topo:= P.topo - 1; en writeln ( Stk Overflow! ); funtion Top(vr P:Pilh):Elem; Págin 12

Pilhs if not IsEmpty (P) then Top:= P.memo[P.topo] writeln ( Stk Unerflow! ); en. Exeríios: 1. Um lterntiv pr orgnizr os os e um pilh onsiste no uso e um vetor M[0..n], one M[0] é uso pr mnter o ínie e topo e M[1], M[2],..., M[n] são usos pr rmzenr os elementos ontios n pilh: ) Que restrição existe o tipo os elementos que pilh poerá ontém? R: Como pilh é ri prtir e um vetor, os elementos pilh evem ser toos o mesmo tipo (inteiro, rel, hr...) slvo quno em tipo poss ser onvertio em outro tipo. ) Esquemtize representção gráfi pr pilh P:[,,, ]. (P) Topo Bse ) Implemente s rotins pr inserir e remover elementos pilh. 2. É possível mnter us pilhs num únio vetor, stno que um pilh tenh omo se primeir posição o vetor e outr, últim. As pilhs terão e reser um e enontro à outr. Pilh esquer Pilh ireit 5... z y x n-3 1 2 3 4 5... n-3 n-2 n-1 n ) Qul vntgem o esquem e rmzenmento, om relção espço? R: Usr us pilhs om o espço reservo pens um. Desvntgem: os elementos preism ser o mesmo tipo. ) Implemente o tipo Pilh, utilizno est orgnizção e os. Págin 13