Pular para o conteúdo

Lista 05 - Pilhas

Essa lista tem como objetivo fixar os conceitos de pilha, bem como a implementação de suas operações básicas.

Implementar em linguagem Python o pseudocódigo do algoritmo Pilha visto na Aula 04. Faça também:

  1. Teste o método pilhaVazia() através do método desempilhar();
  2. Demonstre o empilhamento de cada um dos caracteres que compõem o seu primeiro nome;
  3. Teste o método pilhaCheia() através do método empilhar(valor);
  4. Após executar as operações anteriores, demonstre qual elemento está no topo da Pilha;
  5. Execute o método desempilhar() por três vezes e verifique qual elemento está no topo da Pilha.

Suponha que você insira a sequência S, A, T, C em uma Pilha. Então você desempilha três elementos. Qual o valor do atributo topo da Pilha?

  1. Qual critério é utilizado para saber se uma Pilha está vazia?
  2. Qual critério é utilizado para saber se uma Pilha está cheia?
  3. Qual é o valor do atributo topo quando a Pilha está vazia?
  4. Qual é o valor do atributo topo quando a Pilha está cheia?
  5. Qual é o valor do atributo topo quando a Pilha contém apenas um elemento?

Durante as aulas, usamos as nomenclaturas em português para nos referirmos aos métodos da Pilha. No entanto, na literatura, é comum encontrar os nomes em inglês. Preencha a tabela abaixo com os nomes em inglês correspondentes aos nomes em português:

Nome em Português Nome comum usado em Inglês
Pilha
empilhar
desempilhar
esta_vazia
esta_cheia
topo
capacidade

Utilizando a classe Pilha implementada no Exercício 01, resolva os desafios abaixo:

  1. Inversão de Palavra: receba uma palavra e utilize a Pilha para exibi-la invertida;

    • Entrada: COMPILADOR → Saída: RODALIPMOC
    • Entrada: BYTE → Saída: ETYB
  2. Palíndromo: receba uma palavra e utilize a Pilha para verificar se ela é um palíndromo (palavra lida da mesma forma de trás para frente);

    • Entrada: ARARA → Saída: É um palíndromo
    • Entrada: PROGRAMA → Saída: Não é um palíndromo
  3. Balanceamento de Parênteses: receba uma expressão matemática e utilize a Pilha para verificar se os parênteses estão balanceados;

    • Entrada: (a + b) * (c - d) → Saída: Parênteses balanceados
    • Entrada: ((a + b) * (c - d) → Saída: Parênteses desbalanceados