Pular para o conteúdo principal

Stack

Introdução

Uma pilha é uma estrutura de dados linear que segue o princípio do Último a Entrar, Primeiro a Sair (LIFO). O último elemento inserido é o primeiro a ser removido.

Operações Principais

  • Empilhar (Push): Adiciona um elemento ao topo da pilha (O(1))
  • Desempilhar (Pop): Remove o elemento do topo da pilha (O(1))
  • Topo (Peek/Top): Visualiza o elemento do topo sem removê-lo (O(1))
  • Está Vazia (IsEmpty): Verifica se a pilha está vazia

Exemplo (Python)

pilha = []

# Empilhar elementos
pilha.append(10)
pilha.append(20)
pilha.append(30)

# Ver o topo
print(pilha[-1]) # Saída: 30

# Desempilhar elementos
print(pilha.pop()) # Saída: 30
print(pilha.pop()) # Saída: 20

# Verificar se está vazia
if not pilha:
print("Pilha está vazia!")

Aplicações

  • Gerenciamento de chamadas de funções (call stack)
  • Funcionalidade de desfazer/refazer em editores
  • Avaliação de expressões (notação pós-fixa, pré-fixa)
  • Análise sintática

Quando Usar uma Pilha

  • Quando é necessário reverter dados
  • Quando é preciso controlar operações aninhadas ou recursivas

Limitações

  • Apenas o elemento do topo é acessível
  • Não é adequada para acesso aleatório

Estruturas de Dados Relacionadas

  • Fila: Segue o princípio Primeiro a Entrar, Primeiro a Sair (FIFO)
  • Deque: Fila de duas pontas, permite inserção/remoção em ambas as extremidades