Pilas en C#

Las pilas son estructuras de datos fundamentales en la programación, y C# ofrece una implementación robusta a través de la clase Stack<T>. En este artículo, exploraremos en profundidad las pilas en C#, desde su funcionamiento interno hasta su aplicación en diversos escenarios.

¿Qué es una Pila?

Una pila se asemeja a una pila de platos: el último elemento en apilarse es el primero en ser retirado. Este comportamiento se conoce como LIFO (Last In, First Out). Las pilas son ideales para situaciones donde se requiere un acceso secuencial en orden inverso.

Implementación de Pilas en C#

La clase Stack<T> en C# proporciona una implementación genérica para trabajar con pilas. A continuación, se presenta un ejemplo de cómo crear e interactuar con una pila:


// Creación de una pila para almacenar números enteros
Stack<int> pilaNumeros = new Stack<int>();

// Apilar elementos (Push)
pilaNumeros.Push(10);
pilaNumeros.Push(20);
pilaNumeros.Push(30);

// Desapilar elementos (Pop)
int numeroDesapilado = pilaNumeros.Pop(); // 30
int siguienteNumero = pilaNumeros.Pop(); // 20

// Consultar el siguiente elemento sin desapilar (Peek)
int siguienteSinDesapilar = pilaNumeros.Peek(); // 10

// Verificar si la pila está vacía (Count)
bool pilaVacia = pilaNumeros.Count == 0;

Lenguaje del código: C# (cs)

Métodos Útiles de la Clase Stack<T> en C#

  • Push(T item): Agrega un nuevo elemento a la cima de la pila.
  • Pop(): Elimina y devuelve el elemento superior de la pila.
  • Peek(): Obtiene el elemento superior de la pila sin eliminarlo.
  • Count: Obtiene la cantidad de elementos en la pila.
  • Clear(): Elimina todos los elementos de la pila.
  • Contains(T item): Verifica si la pila contiene un elemento específico.

Ejemplos Prácticos de Pilas en C#

Aquí tienes un ejemplo que ilustra cómo utilizar los métodos útiles de la clase Stack<T> en C#:


using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Crear una pila de strings
        Stack<string> miPila = new Stack<string>();

        // Agregar elementos a la pila utilizando Push()
        miPila.Push("Uno");
        miPila.Push("Dos");
        miPila.Push("Tres");

        // Mostrar la cantidad de elementos en la pila utilizando Count
        Console.WriteLine("Cantidad de elementos en la pila: " + miPila.Count);

        // Verificar si la pila contiene el elemento "Dos" utilizando Contains()
        Console.WriteLine("¿La pila contiene 'Dos'? " + miPila.Contains("Dos"));

        // Obtener el elemento superior de la pila sin eliminarlo utilizando Peek()
        string elementoEnCima = miPila.Peek();
        Console.WriteLine("Elemento en la cima de la pila: " + elementoEnCima);

        // Eliminar y mostrar los elementos de la pila utilizando Pop()
        Console.WriteLine("Elementos eliminados de la pila:");
        while (miPila.Count > 0)
        {
            string elemento = miPila.Pop();
            Console.WriteLine(elemento);
        }

        // Verificar si la pila está vacía después de eliminar todos los elementos
        Console.WriteLine("¿La pila está vacía? " + (miPila.Count == 0));
    }
}

Lenguaje del código: C# (cs)

Este ejemplo utiliza varios métodos útiles de la clase Stack<T>:

  • Push(T item): Agrega elementos a la pila.
  • Count: Obtiene la cantidad de elementos en la pila.
  • Contains(T item): Verifica si la pila contiene un elemento específico.
  • Peek(): Obtiene el elemento superior de la pila sin eliminarlo.
  • Pop(): Elimina y devuelve el elemento superior de la pila.

Además, muestra cómo verificar si la pila está vacía después de eliminar todos los elementos utilizando la propiedad Count.

Conclusión

Las pilas son una herramienta poderosa en la programación. La clase Stack<T> en C# facilita su implementación y uso. Este artículo ha presentado una guía completa sobre las pilas en C#, incluyendo su funcionamiento, implementación y ejemplos prácticos.

Dominar las pilas te permitirá resolver problemas de forma eficiente y elegante en tus proyectos de C#.