Módulo 3 - Filas: o primeiro a chegar é o primeiro a sair

Enfileirar e desenfileirar: as operações da fila

8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 12/07/2026

O que você vai aprender

  • Usar a operação de enfileirar para adicionar um elemento no fim da fila.
  • Usar a operação de desenfileirar para remover o elemento da frente.
  • Prever a ordem de saída de uma sequência de enfileiramentos.
  • Reconhecer usos reais: impressão, filas de tarefas e buffers.

Duas operações, uma em cada ponta

Assim como a pilha tinha empilhar e desempilhar, a fila tem enfileirar e desenfileirar. A diferença é que na fila cada operação trabalha uma ponta diferente. Enfileirar, também chamado de enqueue, coloca um novo elemento no fim da fila, exatamente como quem chega ao banco e vai para o final. Desenfileirar, ou dequeue, tira o elemento da frente, o mais antigo dos que esperam, como quem é finalmente chamado no guichê e sai da fila. Repare que você nunca mexe no meio: entra sempre pelo fim, sai sempre pela frente. É essa disciplina de pontas que mantém a ordem justa e que torna a fila previsível.

fila <- []                 // fila vazia
enfileirar(fila, "Ana")    // fila: [Ana]
enfileirar(fila, "Bruno")  // fila: [Ana, Bruno]
enfileirar(fila, "Célia")  // fila: [Ana, Bruno, Célia]
// desenfileirar tira sempre a FRENTE (o mais antigo):
proximo <- desenfileirar(fila)   // proximo = Ana; fila: [Bruno, Célia]
escreva(proximo)                 // mostra Ana

Enfileirar joga no fim; desenfileirar tira da frente. Ana entrou primeiro, então Ana sai primeiro.

Diagrama de uma fila com três caixas em sequência: Ana, Bruno, Célia. Uma seta grande à esquerda aponta para dentro do fim da fila com o rótulo enfileirar, mostrando um novo elemento Davi entrando pelo fim. Uma seta grande à direita aponta para fora da frente com o rótulo desenfileirar, mostrando Ana saindo pela frente.
Enfileirar entra pelo fim (Davi); desenfileirar sai pela frente (Ana). As duas operações nunca se cruzam.

Prever quem sai primeiro

O jeito mais seguro de acompanhar uma fila é imaginar a fila de verdade se formando. A cada enfileirar, alguém entra no final; a cada desenfileirar, o primeiro da frente vai embora. Como a ordem nunca é invertida, quem entrou primeiro sempre sai primeiro, não importa quantos entrem no meio do caminho. Esse é o ponto que mais confunde quem vem da pilha: na pilha, o último a entrar era o próximo a sair, então você olhava para o topo mais recente; na fila, você olha sempre para o mais antigo que ainda está lá. Treinar essa previsão é o que fixa a diferença entre as duas estruturas.

🎮 Jogo da aula

Quem sai da fila?

Acompanhe os enfileiramentos e desenfileiramentos e descubra o que o programa mostra no final.

fila <- []
enfileirar(fila, "X")
enfileirar(fila, "Y")
desenfileirar(fila)
enfileirar(fila, "Z")
desenfileirar(fila)
escreva(desenfileirar(fila))

Para que a fila serve na prática

As operações ganham sentido quando você vê onde a fila trabalha de verdade. Uma impressora compartilhada guarda os documentos numa fila e imprime na ordem em que foram enviados: cada envio é um enfileirar, cada impressão é um desenfileirar. Um servidor que recebe muitos pedidos ao mesmo tempo coloca as tarefas numa fila e as executa uma a uma, sem perder nenhuma nem trocar a ordem. Um vídeo que você assiste online chega em pedaços que entram num buffer, uma fila que segura os pedaços na ordem certa até serem exibidos. Em todos esses casos, o par enfileirar e desenfileirar é o motor invisível que mantém tudo em sequência.

Teste rápido

Em qual ponta da fila cada operação trabalha?

Perguntas frequentes

Enfileirar e empilhar são a mesma coisa?
Não. Empilhar coloca no topo da pilha, o mesmo lugar de onde se tira, então o último a entrar sai primeiro. Enfileirar coloca no fim da fila, longe da frente de onde se tira, então o primeiro a entrar sai primeiro. Os nomes parecem, mas o resultado é oposto: uma inverte a ordem, a outra preserva.
Posso remover um elemento do meio da fila?
Na fila pura, não. A disciplina da fila é entrar pelo fim e sair pela frente, sem mexer no meio, e é isso que garante a ordem FIFO. Estruturas mais gerais, como a lista ligada, permitem remover do meio, mas aí você já não tem mais uma fila simples, e sim outra estrutura com outras regras.
O que acontece se eu desenfileirar uma fila vazia?
Depende de como o programa trata esse caso. O correto é checar antes se a fila tem algum elemento; se estiver vazia, não há o que tirar, e tentar mesmo assim costuma gerar erro ou um valor inválido. É o mesmo cuidado de borda que se toma antes de desempilhar uma pilha vazia.
O que é o buffer de um vídeo, em termos de fila?
É uma fila que segura os pedaços do vídeo que já chegaram pela internet, na ordem em que chegaram, até que o player os exiba. Cada pedaço recebido é enfileirado; cada pedaço exibido é desenfileirado. Quando a conexão cai, o buffer segura o que tem para você não parar de assistir na hora.
A ordem de saída pode mudar se eu intercalar as operações?
A ordem relativa entre os que estão na fila nunca muda: quem entrou antes sai antes. Intercalar enfileirar e desenfileirar muda quantos estão na fila num dado momento, mas não a regra. Para prever o resultado, basta simular a fila crescendo pelo fim e diminuindo pela frente, passo a passo.
Por que existe uma estrutura pronta chamada deque?
Porque implementar uma fila só com uma lista comum pode ser ineficiente ao remover da frente. Linguagens oferecem estruturas otimizadas, como o deque do Python, feitas para adicionar e remover nas duas pontas rapidamente. A ideia lógica de enfileirar e desenfileirar continua a mesma; muda só a eficiência por baixo.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.