Prof. Gustavo Rissetti gustavo.rissetti@iffarroupilha.edu.br 1
Pilhas • É uma das estruturas de dados mais simples. • A ideia fundamental da pilha é que todo o acesso a seus elementos é feito através do seu topo. ◦ Assim, quando um elemento novo é introduzido na pilha, passa a ser o elemento do topo, e o único elemento que pode ser removido da pilha é o do topo.
Prof. Gustavo Rissetti gustavo.rissetti@iffarroupilha.edu.br 2
Pilhas • É uma estrutura de dados baseada no princípio LIFO (Last In, First Out), na qual os dados que foram inseridos primeiros na pilha serão os últimos a serem removidos.
Prof. Gustavo Rissetti gustavo.rissetti@iffarroupilha.edu.br 3
Pilhas • Exemplos de aplicações reais: ◦ O exemplo mais prático que costuma utilizar-se para entender o processo de pilha é como uma pilha de livros ou pilha de pratos, no qual ao se colocar diversos elementos uns sobre os outros, se quisermos pegar o livro mais abaixo deveremos tirar todos os livros que estiverem sobre ele. • Exemplos na área: ◦ Os navegadores Web que armazenam os endereços das páginas mais recentemente visitadas numa pilha. ◦ Os editores de texto que disponibilizam mecanismo de "desfazer" (undo), normalmente mantêm armazenadas numa pilha as mudanças de textos ocorridas.
Prof. Gustavo Rissetti gustavo.rissetti@iffarroupilha.edu.br 4
Pilhas • Para a estrutura de dados do tipo Pilha, usamos a mesma classe Elemento usada na Lista Encadeada, onde um Elemento armazena uma referência para o próximo elemento.
Prof. Gustavo Rissetti gustavo.rissetti@iffarroupilha.edu.br 5
Classe Pilha
◦ Uma pilha geralmente suporta as seguintes operações básicas:
◦ Empilhar (push): insere um novo elemento no topo da lista; ◦ Desempilhar (pop): remove o elemento do topo da lista. ◦ Topo (top): acessa-se o elemento posicionado no topo da pilha; ◦ Vazia (isEmpty): indica se a pilha está vazia. ◦ Tamanho (size): retorna a quantidade de elementos da pilha.
Prof. Gustavo Rissetti gustavo.rissetti@iffarroupilha.edu.br 6
Método para Empilhar
Prof. Gustavo Rissetti gustavo.rissetti@iffarroupilha.edu.br 7
Método para Desempilhar
Prof. Gustavo Rissetti gustavo.rissetti@iffarroupilha.edu.br 8
Exemplo de Uso de Pilhas
Prof. Gustavo Rissetti gustavo.rissetti@iffarroupilha.edu.br 9
Exemplo de Uso de Pilhas
Prof. Gustavo Rissetti gustavo.rissetti@iffarroupilha.edu.br 10
Exercícios 1) Altere a classe Pilha para ela conter o método vazia(), que indica se a pilha está vazia (retorna um booleano). 2) Modifique a classe Pilha para que ela tenha um método tamanho(), que retorna a quantidade de elementos da pilha. 3) Adicione um método listar() na classe Pilha para que sejam listados os elementos da mesma. 4) Descreva a saída da seguinte sequência de operações sobre uma pilha de inteiros: push(5), push(3), pop(), push(2), push(8), pop(), pop(), push(9), push(1), pop(), push(7), push(6), pop(), pop(), push(4), pop(), pop().
Prof. Gustavo Rissetti gustavo.rissetti@iffarroupilha.edu.br 11
Exercícios 5) Escreva um programa para ler uma frase digitada via teclado, armazene cada letra em uma pilha, e como saída, exiba na tela a frase invertida. 6) Escreva um programa que use pilha para verificar se uma dada cadeia de caracteres é ou não palíndroma. Por exemplo: “subi no onibus” ou “amor a roma” é palíndroma.
Prof. Gustavo Rissetti gustavo.rissetti@iffarroupilha.edu.br 12