Filas e pilhas são muito importantes em diferentes processos no dia a dia, tanto para processos em computação quanto no “mundo real”. As filas são estruturas sequenciais ordenadas, onde um novo elemento sempre é inserido no final da fila e só pode ser removido o elemento do início da fila. Não se pode “furar a fila”.
Vamos alterar um pouco essa definição de fila para atender a um problema real. Imagine que você entra em uma fila em um banco que é gerenciada através de senhas. Porém, não é uma fila única e simples, mas uma fila que comporta diferentes situações:
- Existem 4 caixas realizando o atendimento.
- As senhas distribuídas possuem uma letra, que indica a categoria, seguida por um número sequencial.
- Considere as seguintes categorias:
- C – Comum
- P – Prioridade (idosos, gestantes, etc.)
- R – Atendimento rápido (operações simples)
- O caixa 1 atende às prioridades. Se não houver prioridades na fila, atendem o próximo da fila, de qualquer categoria.
- Os caixas 2 e 3 realizam atendimentos comuns. Se não houver, atendem o próximo da fila, de qualquer categoria.
- O caixa 4 é especial para atendimentos rápidos. Se não houver, atendem o próximo da fila, de qualquer categoria.
Segue uma implementação em linguagem C seguindo as regras apresentadas.