Saltar al contenido principal
Publicado el

Clase Queue en C#

Compartir:

Introducción

La clase Queue en C# es un ejemplo de una de las estructuras de datos más fundamentales en la informática. Aunque pueda parecer sencilla, una cola puede ser la solución a muchos problemas que implican la organización y el procesamiento secuencial de datos.

¿Qué es una Queue?

Una Queue, o cola, es una estructura de datos que opera bajo el principio FIFO (First In - First Out). Esto significa que el primer elemento que entra en la cola será el primero en salir.

Principales Características

  • Orden: La principal característica de una cola es mantener el orden. El orden de entrada de los elementos es el mismo que el de salida.
  • Dinamismo: Aunque puede tener una capacidad máxima, en general la cola puede crecer y reducirse según sea necesario.
  • Universalidad: Casi todos los lenguajes de programación tienen algún tipo de implementación de cola.

Métodos Esenciales de la Clase Queue en C#

  • Enqueue(objeto): Agrega un objeto al final de la cola.
  • Dequeue(): Elimina y devuelve el objeto del inicio de la cola.
  • Peek(): Devuelve el objeto al inicio de la cola sin eliminarlo.
using System;
using System.Collections.Generic;

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

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

      ImprimirCola();

      Console.WriteLine($"\nEliminando el número {cola.Dequeue()} de la cola con el método Dequeue().\n");

      ImprimirCola();

      Console.WriteLine($"\nEl número que se encuentra en la parte superior de la cola es el {cola.Peek()}.");
    }

    private void ImprimirCola() {
      foreach (var numero in cola)
        Console.WriteLine(numero);
    }
  }
}

/*
  1
  10
  100
  1000
  10000

  Eliminando el número 1 de la cola con el método Dequeue().

  10
  100
  1000
  10000

  El número que se encuentra en la parte superior de la cola es el 10.
*/

Variaciones de la Queue

Existen varias variaciones de la estructura de cola que resuelven distintos tipos de problemas:

  • Priority Queue: En una cola de prioridad, a los elementos se les asignan prioridades. Cuando se encola un elemento, se coloca en la posición según su prioridad y no según el orden de llegada.
  • Circular Queue: En esta variación, el último elemento apunta al primero, formando un círculo. Es útil para problemas de buffer, como la reproducción de contenido multimedia.
  • Double-ended Queue (Deque): Los elementos pueden agregarse o eliminarse desde ambos extremos.

Aplicaciones Prácticas

  1. Sistemas Operativos: Usan colas para gestionar procesos que están esperando un recurso específico o para ejecutarse.
  2. Sistemas de Videojuegos: Se usan para gestionar la lista de tareas de IA, animaciones y mucho más.
  3. Aplicaciones en Tiempo Real: Gestión de tareas en sistemas de control de tráfico aéreo o telemetría.

Beneficios y Limitaciones

Beneficios

  • Organización: Mantiene los datos en un orden sistemático.
  • Gestión de Recursos: Ayuda a garantizar que los recursos se utilicen de manera eficiente, especialmente en sistemas multitarea.

Limitaciones

  • Acceso a los Datos: En una cola estándar, solo puedes acceder al primer elemento.
  • Capacidad: Si la cola está implementada con un array, puede llenarse.

Conclusión

Entender la clase Queue en C# y sus aplicaciones es esencial para cualquier desarrollador. Permite una mejor organización de los datos y puede ser la clave para optimizar muchos algoritmos y sistemas.

Happy coding!