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ón | Descripción | Complejidad |
---|---|---|
Push() | Agrega un elemento a la pila | O(1) |
Pop() | Elimina el último elemento agregado | O(1) |
Peek() | Obtiene el último elemento sin eliminarlo | O(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ón | Descripción | Complejidad |
---|---|---|
Enqueue() | Agrega un elemento al final | O(1) |
Dequeue() | Elimina el primer elemento | O(1) |
Peek() | Obtiene el primer elemento sin eliminarlo | O(1) |
Comparación entre Pilas y Colas
Característica | Pila (Stack) | Cola (Queue) |
---|---|---|
Orden de acceso | LIFO (Último en entrar, primero en salir) | FIFO (Primero en entrar, primero en salir) |
Uso común | Deshacer acciones, navegación web, ejecución de llamadas recursivas | Manejo de procesos, impresión de documentos, atención de clientes |
Métodos principales | Push(), Pop(), Peek() | Enqueue(), Dequeue(), Peek() |
Complejidad | O(1) en todas las operaciones | O(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:
- Crea un programa en C# que implemente una pila para administrar acciones de «deshacer» en un editor de texto.
- 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.