Índice
1. Introducción2. Palabras Clave
3. Clase No-Genérica Stack
4. Clase Genérica Stack≶T>
5. Conclusiones
6. Literatura & Enlaces
1. Introducción
Este artículo describe la estructura de datos o colección Stack (versión no-genérica y genérica) que organiza los elementos como una pila y sigue el esquema último en entrar primero en salir o LIFO. Se describe la funcionalidad de los métodos principales Push (insertar un elemento) y Pop (remover un elemento); y además, Peek: el cual se usa para obtener el elemento a la cabeza de la pila.
2. Palabras Clave
- Colección
- Estructura de datos
- LIFO
- Pila
- Stack
3. Clase No-Genérica Stack
La clase Stack (namespace System.Collections) es la clase que organiza sus elementos siguiendo un esquema LIFO (last-in-last-out), lo que quiere decir es que a medida que se van insertando elementos cada uno de éstos se apila sobre su antecesor y tiene mayor precedencia para ser manipulado. La Figura 1 ilustra el comportamiento de esta estructura:
Figura 1. Pila o Stack. |
Esta clase corresponde con la versión no-genérica e implementa las interfaces de colecciones ICollection y IEnumerable.
El crecimiento y decrecimiento de esta estructura es dinámico: a medida que se insertan elementos está crece, lo contrario ocurre cuando se remueven elementos ("Stack Class", 2017).
Se puede hablar de tres operaciones básicas:
- Push: inserta un elemento en la pila, en la parte superior. Mientras que el conteo (Count) sea menor que la capacidad, el rendimiento de la operación es de O(1).
- Pop: remueve un elemento de la pila. Complejidad O(1).
- Peek: toma (sin remover) el elemento a la cabeza de la pila. Complejidad o rendimiento O(1).
Un ejemplo de uso básico podría ser:
4. Clase Genérica Stack<T>
Este artefacto o clase representa la versión genérica de esta estructura tipo LIFO. Se halla en el nombre de espacio System.Colletions.Generic. A diferencia de su contraparte no-genérica, cuenta con mayor rendimiento ya que no hace uso de las operaciones boxing y unboxing (Boxing y Unboxing en C#).
Similar a una cola o Queue, esta estructura se usa para el almecenamiento temporal de elementos que siguen una lógica de tratamiento de acuerdo al esquema último-en-entrar-primero-en-salir.
También cuenta con los métodos básicos Push, Pop y Peek.
Vale apuntar que esta clase cuenta con una versión para acceso concurrente: System.Collections.Concurrent.ConcurrentStack<T>; para permitir que múltiples threads acceden a los elementos de la pila ("Stack(T) Class", 2017).
La versión de ejemplo de uso en genéricos queda de la siguiente forma:
Archivo C# TresMaestrosGenericos.cs [Enlace alternativo]:
5. Conclusiones
En este artículo se presentó la colección o estructura de datos que sigue el esquema de organización de sus elementos basado en LIFO: el último elemento que es insertado a la pila es el primero en salir. Se describieron, grosso modo, las operaciones elementales: Push, Pop y Peek.
En el siguiente artículo se describirá la clase BitArray: colección de valores booleanos compactados.
6. Literatura & Enlaces
Albahari, J., Albahari, B. (2012). C# 5.0 in a Nutshell. United States: O'Reilly Media.
Stack Class (System.Collections) (2017). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.collections.stack(v=vs.110).aspx
Stack(T) Class (System.Collections.Generic) (2017). Recuperado desde: https://msdn.microsoft.com/en-us/library/3278tedw(v=vs.110).aspx
Boxing y Unboxing en C# (2017). Recuperado desde: https://ortizol.blogspot.com.co/2014/03/boxing-y-unboxing-en-c.html
O
No hay comentarios:
Publicar un comentario
Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.