Como funciona la clase Stack de C#

Hola a todos, hoy os voy a explicar como utilizar la clase Stack C#.

La clase Stack de C# (pila en ingles), es una estructura dinámica que nos permite almacenar datos mediante LIFO (Last Input First Output o ultimo en entrar primero en salir).

En esta pila, podemos meter los datos del tipo que indiquemos, por ejemplo, podemos hacer una pila de cadenas, de números, objetos, etc.

Para crear un Stack en C#:

Stack<string> pila = new Stack<string>();

Si la queréis de otro tipo, seria cambiar string por el tipo que queráis.

Para insertar elementos en la pila, lo haremos con push.

pila.Push("a");
pila.Push("b");
pila.Push("c");
pila.Push("d");
pila.Push("e");

Si queremos quitar algún elemento, lo haremos con pop, pero recuerda sacara el ultimo que se metió, en este caso el string “e”.

 


pila.Pop();

Si queremos saber quien es el primer elemento de la pila, lo podemos saber con Peek(). Este no elimina de la pila, solo lo devuelve.


Console.WriteLine(pila.Peek());

Para saber el numero de elementos de la pila usaremos la propiedad Count.


Console.WriteLine("Num elementos: " + pila.Count);

Para recorrer la pila, lo podemos hacer con un foreach:


foreach (string p in pila)
{
    Console.WriteLine(p);
}

Otra forma de recorrer una pila, seria así:


while (pila.Count != 0)
{
    string p = pila.Pop();
    Console.WriteLine(p);
}

Tened en cuenta que lo recorre y limpia la pila.

 

Os dejo el ejemplo completo:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace stack_example
{
    class Program
    {
        static void Main(string[] args)
        {
            Stack<string> pila = new Stack<string>();

            pila.Push("a");
            pila.Push("b");
            pila.Push("c");
            pila.Push("d");
            pila.Push("e");

            pila.Pop();

            Console.WriteLine("Primer elemento: " + pila.Peek());

            Console.WriteLine("Num elementos: " + pila.Count);

            foreach (string p in pila)
            {
                Console.WriteLine(p);
            }

            while (pila.Count != 0)
            {
                string p = pila.Pop();
                Console.WriteLine(p);
            }

            Console.WriteLine("Num elementos: " + pila.Count);

            Console.ReadLine();
        }
    }
}


Os dejo un video donde hago un ejercicio con Stack:

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Etiquetas

Deja un comentario

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