Stack
Uma stack (pilha) é uma estrutura de dados linear onde todas as operações acontecem apenas em uma extremidade: o topo.
Conceito
O que é uma Stack?
Uma stack segue a regra:
LIFO — Last In, First Out
O último elemento a entrar é o primeiro a sair. Uma boa analogia é uma pilha de pratos. Quando colocamos um prato novo, ele vai para o topo da pilha. Quando retiramos um prato, também pegamos o que está no topo.
Ou seja, todas as operações acontecem apenas no topo da pilha.
Embora stacks frequentemente sejam implementadas usando arrays, o mais importante não é a estrutura subjacente, mas as regras de acesso aos dados.
Operações
Funcionamento
Em uma stack existem apenas duas operações principais:
- push → inserir um elemento no topo
- pop → remover o elemento do topo
Também é comum existir uma operação de leitura:
- peek → visualizar o elemento do topo sem removê-lo
Essas restrições tornam a estrutura simples e eficiente.
Inserção
Push (Inserção)
Inserir um elemento em uma stack significa colocá-lo no topo da pilha.
Exemplo:
[10, 20, 30] Após um push(40):
[10, 20, 30, 40] Nenhum elemento precisa ser deslocado, pois sempre inserimos no final da estrutura.
Complexidade: O(1)
Remoção
Pop (Remoção)
A remoção também ocorre apenas no topo da stack.
Exemplo:
[10, 20, 30, 40] Após um pop():
[10, 20, 30] O último elemento é removido diretamente, sem necessidade de mover outros elementos.
Complexidade: O(1)
Leitura
Peek (Leitura do topo)
A operação peek permite visualizar o elemento que está no topo da pilha sem removê-lo.
Exemplo:
[10, 20, 30] peek() retorna:
30 Como o acesso é direto ao topo da estrutura:
Complexidade: O(1)
Busca
Busca
Stacks não são projetadas para busca eficiente.
Se for necessário procurar um elemento dentro da pilha, é preciso percorrer os elementos um a um, normalmente do topo até a base.
No pior caso, todos os elementos precisam ser verificados.
Complexidade: O(N)
Por esse motivo, stacks são utilizadas em cenários onde o acesso ocorre sempre no topo, e não quando é necessário localizar elementos no meio da estrutura.
Resumo
Resumo de Complexidades
| Operação | Complexidade |
|---|---|
| Push (inserção) | O(1) |
| Pop (remoção) | O(1) |
| Peek (leitura do topo) | O(1) |
| Busca | O(N) |