Pilhas e Filas

Pilhas e Filas em Estrutura de Dados

As pilhas e filas são duas das estruturas de dados mais utilizadas na programação. Presentes em sistemas, algoritmos e até no funcionamento de hardware, elas são fundamentais para organizar e processar informações de forma eficiente.
Neste artigo, vamos entender o que são pilhas e filas, suas regras de funcionamento, como são implementadas e quais operações podem ser realizadas.

Pilhas: Definição

Uma pilha é uma estrutura de dados que segue a regra LIFO (Last In, First Out) — o último elemento que entra é o primeiro a sair. Imagine uma pilha de pratos: você só consegue retirar o prato que está no topo.

Características principais:

  • Apenas o elemento no topo pode ser acessado diretamente.
  • Inserções e remoções acontecem no mesmo ponto (o topo).
  • Usada quando a ordem de processamento precisa ser invertida em relação à entrada.

Aplicações comuns:

  • Funções recursivas (armazenamento da pilha de chamadas).
  • Desfazer/refazer ações em editores de texto.
  • Análise de expressões matemáticas.

Pilhas: Implementação e Operações

As pilhas podem ser implementadas de várias formas, sendo as mais comuns:

  1. Usando arrays (vetores) – mais simples, mas com tamanho fixo.
  2. Usando listas ligadas – flexível, permite tamanho dinâmico.

Operações básicas:

  • Push – insere um elemento no topo da pilha.
  • Pop – remove o elemento do topo.
  • Peek/Top – visualiza o elemento no topo sem removê-lo.
  • isEmpty – verifica se a pilha está vazia.

Exemplo em Python:

pilha = []
pilha.append(1)  # Push
pilha.append(2)
print(pilha.pop())  # Pop -> 2

Filas: Definição

A fila é uma estrutura de dados que segue a regra FIFO (First In, First Out) — o primeiro elemento que entra é o primeiro a sair.
O exemplo clássico é uma fila de atendimento: quem chega primeiro é atendido antes.

Características principais:

  • Inserções acontecem no final (cauda).
  • Remoções acontecem no início (cabeça).
  • Preserva a ordem original de chegada dos elementos.

Aplicações comuns:

  • Controle de requisições em servidores.
  • Filas de impressão.
  • Processos em sistemas operacionais.

Filas: Implementação e Operações

Formas comuns de implementar filas:

  1. Usando arrays – requer controle dos índices de início e fim.
  2. Usando listas ligadas – flexível, permite crescimento dinâmico.
  3. Usando estruturas prontas da linguagem – por exemplo, queue.Queue no Python.

Operações básicas:

  • isEmpty – verifica se a fila está vazia.
  • Enqueue – adiciona elemento no final.
  • Dequeue – remove elemento do início.
  • Front – acessa o elemento do início sem removê-lo.

Exemplo em Python:

from collections import deque
fila = deque()
fila.append(1)  # Enqueue
fila.append(2)
print(fila.popleft())  # Dequeue -> 1

Pilhas e Filas: Comparação

CaracterísticaPilha (Stack)Fila (Queue)
RegraLIFOFIFO
InserçãoTopoFinal
RemoçãoTopoInício
Exemplo realPilha de pratosFila de banco

Ambas são tipos abstratos de dados que podem ser implementados de diferentes maneiras. A escolha entre pilha ou fila depende do problema a ser resolvido.
Por exemplo, um algoritmo de navegação de páginas de internet (botões voltar e avançar) normalmente usa pilha, enquanto um sistema de impressão em rede usa fila.

Conclusão

Dominar o funcionamento de pilhas e filas em estrutura de dados é essencial para qualquer programador. Esses conceitos aparecem tanto em problemas simples quanto em sistemas complexos, e compreender suas regras e implementações ajuda a escrever código mais eficiente e organizado.
Ao aplicar esses conceitos, lembre-se: escolha a estrutura certa para cada situação e utilize implementações que otimizem memória e desempenho.

Rolar para cima