Tópico 06 - Pilhas

Tópico 06: Pilhas

Estrutura de Dados - Professor Ramon Venson - SATC 2026.2
Tópico 06 - Pilhas

Pilha

Estrutura de dados do tipo LIFO (Last In, First Out), ou seja, o último elemento a ser inserido é o primeiro a ser removido.

Estrutura de Dados - Professor Ramon Venson - SATC 2026.2
Tópico 06 - Pilhas

Exemplos

  • Pilha de pratos: o último prato colocado no topo da pilha é o primeiro a ser retirado.
  • Pilha de livros: o último livro colocado no topo da pilha é o primeiro a ser retirado.

Exemplos de Uso

  • Pilha de chamadas de funções em linguagens de programação.
  • Navegadores web: histórico de páginas visitadas.
  • Undo/redo em editores de texto.
Estrutura de Dados - Professor Ramon Venson - SATC 2026.2
Tópico 06 - Pilhas

Características

  • Acesso restrito: Apenas o elemento no topo da pilha pode ser acessado diretamente.
  • Operações principais: As operações básicas são push (inserir) e pop (remover).
  • Sem pesquisa: Não é possível acessar elementos internos da pilha diretamente.
Estrutura de Dados - Professor Ramon Venson - SATC 2026.2
Tópico 06 - Pilhas

Métodos

  • Empilhar/Push: Adiciona um elemento no topo da pilha.
  • Desempilhar/Pop: Remove o elemento do topo da pilha.
  • Topo/Peek: Retorna o elemento do topo da pilha sem removê-lo.
  • Verificar se está vazia: Retorna verdadeiro se a pilha estiver vazia
  • Verificar se está cheia: Retorna verdadeiro se a pilha estiver cheia
Estrutura de Dados - Professor Ramon Venson - SATC 2026.2
Tópico 06 - Pilhas

Inicialização

classe Pilha:
    capacidade: inteiro
    topo: inteiro
    valores: array

    construtor(capacidade):
        self.capacidade <- capacidade
        self.topo <- -1
        self.valores <- novo array de inteiro com tamanho capacidade
Estrutura de Dados - Professor Ramon Venson - SATC 2026.2
Tópico 06 - Pilhas

Verificando se a Pilha está Vazia

esta_vazia():
    retorne topo == -1

Para verificar se a pilha está vazia, podemos utilizar o método esta_vazia(), que retorna verdadeiro se o topo da pilha for igual a -1 (valor inicial de topo).

Estrutura de Dados - Professor Ramon Venson - SATC 2026.2
Tópico 06 - Pilhas

Verificando se a Pilha está Cheia

esta_cheia():
    retorne topo == (capacidade - 1)

Para verificar se a pilha está cheia, podemos utilizar o método esta_cheia(), que retorna verdadeiro se o topo da pilha for igual à capacidade máxima da pilha menos 1 (porque os índices começam em 0).

Estrutura de Dados - Professor Ramon Venson - SATC 2026.2
Tópico 06 - Pilhas

Inserção de Elementos

empilhar(valor):
    se esta_cheia() então
        retorne "Pilha cheia"
    senao:
        topo <- topo + 1
        valores[topo] <- valor

Todo elemento que for adicionado, será inserido no topo da pilha, ou seja, na primeira posição disponível do vetor. Caso a pilha esteja cheia, o método retorna uma mensagem de erro.

Estrutura de Dados - Professor Ramon Venson - SATC 2026.2
Tópico 06 - Pilhas

Verificando o Elemento do Topo

topo():
    se esta_vazia() então
        retorne "Pilha vazia"
    senao:
        retorne valores[topo]

Podemos verificar qual é o elemento que está no topo da pilha sem removê-lo, utilizando o método topo().

Estrutura de Dados - Professor Ramon Venson - SATC 2026.2
Tópico 06 - Pilhas

Remoção de Elementos

desempilhar():
    se esta_vazia() então
        retorne "Pilha vazia"
    senao:
        valor <- valores[topo]
        topo <- topo - 1
        retorne valor

Só podemos remover o elemento que está no topo da pilha, ou seja, o último elemento que foi inserido. Se a pilha estiver vazia, o método retorna uma mensagem de erro.

Estrutura de Dados - Professor Ramon Venson - SATC 2026.2