- Estrutura de Dados - Fila


A fila é um tipo especial de lista, onde os elementos são inseridos em uma extremidade, chamada início da fila, e retirados na extremidade oposta, chamada final da fila (figura 1). Esta característica é conhecida como FIFO (First In, First Out - Primeiro a Entrar, Primeiro a Sair). Desta forma, o primeiro elemento que foi inserido na fila será o primeiro elemento a ser removido. A estrutura fila pode ser comparada a uma fila de banco. O primeiro cliente que chegou, será o primeiro a ser atendido. Também a fila pode ser implementadas de forma estática, é uma estrutura de dados implementada sobre um vetor de tamanho fixo, definido previamente pelo programador, ou dinâmica, é construída sobre uma lista encadeada, o que significa que sua capacidade pode crescer de acordo com a necessidade do programa, restringida apenas pela memória disponível.

A estrutura de dados fila, como seu próprio nome já sugere, é semelhante ao funcionamento de uma fila de banco. Onde: 1) Se não há ninguém na fila e chega uma pessoa, está será o inicio e o fim da fila; 2) A partir de então, qualquer pessoa que chegar irá para o final da fila (após a pessoa que está no fim); 3) Cada elemento a ser removido será do inicio da fila (O primeiro que chega na fila é o primeiro que sai).

  As operações mais comuns efetuadas com filas são: 

•  Criar: cria uma fila vazia.

•  Enfileirar: insere um elemento no fim da fila.

•  Desenfileirar: remover um elemento no início da fila.

•  Exibir início: exibe o elemento do início da fila.

•  Exibir a quantidade: retorna a quantidade de elementos da fila.

•  Esvaziar: esvazia a fila.

    As filas são úteis em diversas aplicações, como por exemplo, os sistemas operacionais, que utilizam filas para gerenciar o escalonamento dos processos que serão executados pelo processador e a alocação de recursos. 
   Uma fila possui elementos característicos, sem os quais torna-se impossível sua manipulação:

- Frente: é a posição que indica o próximo elemento a ser acessado. - Fim: é a posição que indica o próximo elemento a ser inserido. - Tamanho: é o número máximo de posições permitidas na fila.


Tamanho = 7 Frente = 1 Fim = 4

Operações:

	Temos as operações de inicialização de uma fila, inserção de um elemento e retirada de um elemento.

- Inicialização: dizemos que uma fila F está vazia, quando sua frente e seu fim for igual a zero, ou seja, não existe nenhuma posição da estrutura ocupada por algum elemento.

- Inserção: podemos inserir elementos até que o fim seja igual ao tamanho. Inserção de elementos além do tamanho da fila, configura-se um caso de overflow,ocorre quando uma operação excede a capacidade de armazenamento de um tipo de dado, resultando em erros inesperados.

-Remoção: podemos retirar elementos da fila, até que frente seja igual ao fim. Retirada de elementos além desta situação, configura-se um caso de undeflow, se refere a uma condição em que um valor é reduzido abaixo do limite mínimo que pode ser representado por um tipo de dado,levando a comportamentos inesperados no programa.


Outras variações de fila:

Fila Circular: Uma variação da fila simples, mas que reaproveita o espaço do array quando o fim é alcançado, “voltando” para o início. Isso evita o problema de “fila cheia falsa” e permite melhor utilização da memória. É muito usada em sistemas embarcados, buffers de comunicação e estruturas que precisam de alto desempenho contínuo.


Fila Dupla (Deque – Double Ended Queue): É uma fila onde tanto o início quanto o fim podem receber inserções e remoções. Isso permite funções de fila e de pilha ao mesmo tempo. Usada em algoritmos de busca, navegadores (voltar/avançar), buffers deslizantes e estruturas mais flexíveis de dados.



Pergunta:

1- Qual é a regra básica de funcionamento de uma fila e como ela determina quem é atendido primeiro?


Referências:

BEZERRA, Cícero Aparecido. Introdução às estruturas de dados. Curitiba: UFPR, 2018. Disponível em: https://acervodigital.ufpr.br/xmlui/bitstream/handle/1884/55879/introducaoEstruturaDados.pdf?sequence=1&isAllowed=y. Acesso em: 07 dez. 2025.

BALIEIRO, Ricardo. Estrutura de dados. 1. ed. Rio de Janeiro: SESES, 2015. 176 p. Disponível em: https://hood.com.br/new/filegator/repository/Estrutura%20de%20Dados/10%20Livro%20Estrutura%20de%20Dados.pdf. Acesso em: 07 dez. 2025

CORTÉS, Mariela Inés. Estrutura de Dados. 3. ed. Fortaleza, CE: EdUECE, 2015. Disponível em: https://www.uece.br/cct/wp-content/uploads/sites/28/2021/07/Estrutura-de-Dados-2014.pdf. Acesso em: 07 dez. 2025.

UNIOESTE. Aulas Estruturas de Dados. Cascavel: Universidade Estadual do Oeste do Paraná, 2019. Disponível em: https://www.inf.unioeste.br/~adair/ED/Notas%20de%20Aula/Aulas%20Estruturas%20de%20Dados.pdf. Acesso em: 07 dez. 2025.

LUCCHESI, Cláudio L.; KOWALTOWSKI, Tomasz. Estruturas de Dados e Técnicas de Programação. Versão 1.12. Campinas: Instituto de Computação – UNICAMP, 2004. Disponível em: https://www.ic.unicamp.br/~mc202abcd/ln_tkcll.pdf. Acesso em: 07 dez. 2025.