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