El tipo Stack en C#

Para continuar con la serie de colecciones en C# vamos a ver el tipo stack dentro de c#.

 

 

1 - Qué es el tipo stack en C#?

El tipo Stack es una colección que almacena elementos de forma LIFO (last in first out), lo que quiere decir que el último elemento que ha entrado, va a ser el primero de la lista.

Es el opuesto al tipo queue que vimos el otro día. 

 

Para utilizarlo podemos utilizarlo con generics, utilizando stack<T> o sin generics el cual almacena un objeto, sinceramente yo siempre lo haría con generics:

stack c#

Como en las colas, podemos iterar como si fuera una lista, pero si quieres iterar, utiliza una lista.

 

 

2 - Crear un stack y añadir elementos en C#

Crear un stack es muy sencillo, únicamente lo instanciamos e incluimos los elementos con el método .push().

Stack<string> marcas = new Stack<string>();
marcas.Push("Audi");
marcas.Push("Opel");
marcas.Push("BMW");

 

 

3 - Recibir elementos de un stack

Para recibir un elemento, tenemos dos opciones:

  •  Pop() el cual nos devolverá el último elemento insertado en dicho stack, y lo remueve del mismo.
  •  Peek() el cual nos devuelve el elemento sin eliminarlo de la cola.
Console.WriteLine($"La última marca insertada es {marcas.Peek()}"); //BMW
Console.WriteLine($"La última marca insertada (otra vez) es {marcas.Pop()}"); //BMW
Console.WriteLine($"La penúltima marca insertada es {marcas.Pop()}"); //Opel

Si intentamos recibir un elemento pero el stack está vacío nos saltará una excepción `InvalidOperationException`

 

 

4 - Stack y colecciones en c#

Como las colas, Stack<T> está dentro de  System.Collections.Generic e implementala interfaz IEnumerable<T> la cual permite iterar.

foreach(string marca in marcas)
    Console.WriteLine(marca);

Pero como con las colas, si vas a iterar de forma “normal(inversa)” es mejor utilizar una lista.

 

También podemos convertir la cola a un array, diccionario, lista, limpiarla utilizando .Clear(), o incluso comprobar si un elemento está en el stack con .Contains(T).

 

 

Conclusión

En este post hemos visto cómo crear un stack en C#.

En este post hemos visto cómo operar un stack en C#. 

Comparte