0

Estructuras de Datos en C# 04: Pilas y Colas – Implementación y Aplicaciones Reales

Introducción a la clase

En esta clase exploraremos dos estructuras de datos fundamentales: Pilas (Stack) y Colas (Queue). Estas estructuras permiten gestionar datos de manera ordenada y se utilizan en múltiples aplicaciones como deshacer acciones, navegación en el historial del navegador y procesamiento de tareas en espera.

¿Qué obtendrás de esta clase?

  • Comprender qué son las pilas y colas y su funcionamiento.
  • Aprender a implementar Stack<T> y Queue<T> en C#.
  • Conocer las diferencias entre ambas estructuras.
  • Aplicar su uso en casos reales con ejemplos prácticos.

Pilas (Stack)

Una pila sigue el principio LIFO (Last In, First Out), lo que significa que el último elemento en entrar es el primero en salir.

Características de una Pila

  • Inserción y eliminación de elementos solo en la parte superior.
  • Se usa en operaciones como «Deshacer» en editores de texto o el historial de navegación en un navegador.

Implementación de una Pila en C#

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Stack<string> historial = new Stack<string>();

        historial.Push("Página 1");
        historial.Push("Página 2");
        historial.Push("Página 3");

        Console.WriteLine("Última página visitada: " + historial.Peek());

        historial.Pop(); // Elimina la última página

        Console.WriteLine("Página actual después de retroceder: " + historial.Peek());
    }
}

Operaciones principales en una Pila

OperaciónDescripciónComplejidad
Push()Agrega un elemento a la pilaO(1)
Pop()Elimina el último elemento agregadoO(1)
Peek()Obtiene el último elemento sin eliminarloO(1)

Colas (Queue)

Una cola sigue el principio FIFO (First In, First Out), lo que significa que el primer elemento en entrar es el primero en salir.

Características de una Cola

  • Inserción de elementos por un extremo (final).
  • Eliminación de elementos por el otro extremo (frente).
  • Se usa en sistemas de impresión, manejo de procesos en un sistema operativo o atención de clientes en una fila.

Implementación de una Cola en C#

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Queue<string> turnos = new Queue<string>();

        turnos.Enqueue("Cliente 1");
        turnos.Enqueue("Cliente 2");
        turnos.Enqueue("Cliente 3");

        Console.WriteLine("Atendiendo a: " + turnos.Dequeue());

        Console.WriteLine("Siguiente en la fila: " + turnos.Peek());
    }
}

Operaciones principales en una Cola

OperaciónDescripciónComplejidad
Enqueue()Agrega un elemento al finalO(1)
Dequeue()Elimina el primer elementoO(1)
Peek()Obtiene el primer elemento sin eliminarloO(1)

Comparación entre Pilas y Colas

CaracterísticaPila (Stack)Cola (Queue)
Orden de accesoLIFO (Último en entrar, primero en salir)FIFO (Primero en entrar, primero en salir)
Uso comúnDeshacer acciones, navegación web, ejecución de llamadas recursivasManejo de procesos, impresión de documentos, atención de clientes
Métodos principalesPush(), Pop(), Peek()Enqueue(), Dequeue(), Peek()
ComplejidadO(1) en todas las operacionesO(1) en todas las operaciones

Caso de uso real

Un sistema de impresión utiliza una cola para procesar trabajos de impresión en orden de llegada.

Ejemplo en C#: Sistema de impresión con una Cola

using System;
using System.Collections.Generic;

class Impresora
{
    static void Main()
    {
        Queue<string> trabajosImpresion = new Queue<string>();

        trabajosImpresion.Enqueue("Documento 1");
        trabajosImpresion.Enqueue("Documento 2");
        trabajosImpresion.Enqueue("Documento 3");

        while (trabajosImpresion.Count > 0)
        {
            Console.WriteLine("Imprimiendo: " + trabajosImpresion.Dequeue());
        }
    }
}

Este algoritmo garantiza que los documentos se impriman en el orden en que fueron solicitados.

Desafío práctico

Ejercicio:

  1. Crea un programa en C# que implemente una pila para administrar acciones de «deshacer» en un editor de texto.
  2. Implementa un sistema de atención al cliente utilizando una cola, permitiendo agregar clientes a la fila y atenderlos en orden de llegada.

Resumen de la clase

  • Pilas (Stack): Siguen el principio LIFO y se usan en funcionalidades como «Deshacer» o historial de navegación.
  • Colas (Queue): Siguen el principio FIFO y se aplican en sistemas como impresión o atención de clientes.
  • Comparación entre ambas estructuras para entender sus diferencias y aplicaciones.
  • Caso de uso real aplicado a sistemas de impresión.

Próxima clase: Diccionarios y HashTables en C# – Búsqueda eficiente

En la siguiente clase aprenderemos sobre Diccionarios y HashTables, estructuras clave para almacenar y recuperar datos rápidamente mediante claves, optimizando la eficiencia en búsquedas.

Fernando Sonego

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *