Publicado em

Classe Queue em C#

Partilhar:

Introdução

A classe Queue em C# é um exemplo de uma das estruturas de dados mais fundamentais na ciência da computação. Embora pareça simples, uma fila pode ser a solução para muitos problemas que envolvem a organização e processamento de dados em sequência.

O que é uma Queue?

Uma Queue, ou fila, é uma estrutura de dados que opera no princípio FIFO (First In - First Out). Isso significa que o primeiro item que entra na fila será o primeiro a sair.

Principais Características

  • Ordem: A principal característica de uma fila é manter a ordem. A ordem de entrada dos elementos é a mesma de saída.
  • Dynamicidade: Embora possa ter uma capacidade máxima, geralmente a fila pode crescer e encolher conforme necessário.
  • Universalidade: Quase todas as linguagens de programação têm algum tipo de implementação de fila.

Métodos Essenciais da Classe Queue em C#

  • Enqueue(objeto): Adiciona um objeto ao final da fila.
  • Dequeue(): Remove e retorna o objeto do início da fila.
  • Peek(): Retorna o objeto no início da fila sem removê-lo.
using System;
using System.Collections.Generic;

namespace Base {
  class ClasseQueue {
    private Queue<int> fila = new Queue<int>();
    private const int Multiplicador = 10;
    private int numero = 1;

    public void Run() {
      for (int indice = 1; indice <= 5; indice++) {
        fila.Enqueue(numero);
        numero *= Multiplicador; // 1, 10, 100, 1000, 10000
      }

      ImprimirFila();

      Console.WriteLine($"\nA remover o número {fila.Dequeue()} da fila com o método Dequeue().\n");

      ImprimirFila();

      Console.WriteLine($"\nO número que se encontra na parte superior da fila é o {fila.Peek()}.");
    }

    private void ImprimirFila() {
      foreach (var numero in fila)
        Console.WriteLine(numero);
    }
  }
}

/*
  1
  10
  100
  1000
  10000

  A remover o número 1 da fila com o método Dequeue().

  10
  100
  1000
  10000

  O número que se encontra na parte superior da fila é o 10.
*/

Variações da Queue

Existem várias variações da estrutura de fila que resolvem diferentes tipos de problemas:

  • Priority Queue: Em uma fila de prioridade, elementos são dados prioridades. Quando um elemento é enqueued, ele é colocado na posição baseada em sua prioridade e não na ordem de chegada.
  • Circular Queue: Nesta variação, o último elemento aponta para o primeiro, formando um círculo. É útil para problemas de buffer, como reprodução de mídia.
  • Double-ended Queue (Deque): Os elementos podem ser adicionados ou removidos de ambas as extremidades.

Aplicações Práticas

  1. Sistemas Operativos: Usam filas para gerir processos que estão esperando por um recurso específico ou para executar.
  2. Sistemas de Jogo: Usados para gerir a lista de tarefas de AI, animações e muito mais.
  3. Aplicações em Tempo Real: Gerir tarefas em sistemas de controle de tráfego aéreo ou telemetria.

Benefícios e Limitações

Benefícios

  • Organização: Mantém os dados em uma ordem sistemática.
  • Gestão de Recursos: Ajuda a garantir que os recursos sejam utilizados de forma eficiente, especialmente em sistemas multitarefa.

Limitações

  • Acesso a Dados: Em uma fila padrão, você só pode acessar o primeiro elemento.
  • Capacidade: Se a fila estiver implementada usando uma matriz, ela pode ficar cheia.

Conclusão

Entender a classe Queue em C# e suas aplicações é essencial para qualquer desenvolvedor. Permite uma melhor organização dos dados e pode ser a chave para otimizar muitos algoritmos e sistemas.

Happy coding!