Lógica e Estrutura de Dados Fundamentais Pilhas

Propaganda
Lógica e Estrutura de Dados Fundamentais
Pilhas
Professor: Eduardo O. Teles
1
Lógica e Estrutura de Dados Fundamentais
Pilhas
Estruturas Lineares e Encadeadas são amplamente utilizadas em
Introdução a Computação.
Tais estruturas servem como base para a implementação de estruturas de
dados mais
complexas que os alunos trabalharão ao longo do curso.
São exemplos a serem estudados: Listas, Pilhas, Filas e Árvores.
2
Lógica e Estrutura de Dados Fundamentais
Pilhas
As pilhas e filas são ED’s utilizadas também em máquinas virtuais (ex. maq
virtual java);
• Uma pilha é um bloco de objetos que são inseridos e retirados pelo topo;
• Seguem uma política de inserções e remoções denominada LIFO: Last In,
First Out;
• Objetos podem ser inseridos em uma pilha a qualquer momento, mas
somente o último objeto inserido pode ser removido da pilha imediatamente;
• A metáfora utilizada é a de uma pilha de pratos – Operações PUSH e
POP.
3
Lógica e Estrutura de Dados Fundamentais
Pergunta: Onde pilhas são usadas?
• Em computação, que situações vocês lembram de verem pilhas sendo
usadas?
Exemplo 1 - Navegadores para Internet armazenam os endereços
visitados em uma pilha.
Cada vez que um novo site é visitado, seu endereço é inserido em uma
pilha de endereços. Usar a opção de retorno do navegador retorna o último
site visitado (o elemento no topo da pilha).
Exemplo 2 - Editores de texto geralmente oferecem um mecanismo de
reversão de operações (desfazer).
As alterações no texto são mantidas em uma pilha. Tais alterações podem
ser desfeitas em ordem, retirando‐se o elemento do topo da pilha.
4
Lógica e Estrutura de Dados Fundamentais
5
Lógica e Estrutura de Dados Fundamentais
6
Lógica e Estrutura de Dados Fundamentais
7
Lógica e Estrutura de Dados Fundamentais
8
Lógica e Estrutura de Dados Fundamentais
Pilhas
9
Lógica e Estrutura de Dados Fundamentais
Pilhas
Pré‐condições para as operações:
• PUSH:
– A pilha deve possuir espaços disponíveis para a inserção de um
novo item.
• POP
– A pilha não pode estar vazia.
10
Lógica e Estrutura de Dados Fundamentais
Pilhas - Algoritmos
• PUSH(P, x)
top[P] = top[P] + 1
P[top[p]] = x
• POP(P)
se PILHA‐VAZIA(S) então
erro “underflow”
senão
top[P] = top[P] – 1
• PILHA‐VAZIA(S)
se (top[P] == 0) então
retorna TRUE
senão retorna FALSE
11
Lógica e Estrutura de Dados Fundamentais
12
Lógica e Estrutura de Dados Fundamentais
13
Lógica e Estrutura de Dados Fundamentais
14
Lógica e Estrutura de Dados Fundamentais
15
Lógica e Estrutura de Dados Fundamentais
16
Download