Pilas

🥞 Stack (Pilas – LIFO)

La torre de tortitas. Last In, First Out (el último plato que pones encima es el primero que quitas, como el historial de pantallas de un menú).

⚙️ Estructura

Una Pila en C# se puede describir como una lista de elementos en un orden específico, donde cada elemento es agregado al final de la lista y eliminado del principio. Las Pilas se utilizan comúnmente para gestionar la secuencia de eventos o la secuencia de tareas a realizar en un programa.

📝 Ventajas

  • Fácil de utilizar: Las Pilas son fáciles de utilizar y no requieren mucha lógica compleja.
  • Eficaz: Las Pilas son eficaces para gestionar la secuencia de eventos o la secuencia de tareas a realizar en un programa.
  • Flexibles: Las Pilas pueden ser utilizadas para almacenar una variedad de tipos de datos.

🚧 Desventajas

  • No permiten la inserción en cualquier posición: Las Pilas no permiten la inserción en cualquier posición, solo en el final de la pila.
  • No permiten la eliminación de cualquier elemento: Las Pilas no permiten la eliminación de cualquier elemento, solo del principio de la pila.
Estructura de datos - Pilas. Generada con IA
Estructura de datos – Pilas. Generada con IA

🖥️ Código fuente – CRUD (ejemplo)

Creación

public class Jugador
{
    public string Nombre { get; set; }
    public int Puntos { get; set; }
}

public class Juego
{
    private Stack<Jugador> jugadores;

    public Juego()
    {
        jugadores = new Stack<Jugador>();
    }

    public void AgregarJugador(Jugador jugador)
    {
        jugadores.Push(jugador);
    }
}

Lectura

    public Jugador ObtenerJugador()
    {
        if (jugadores.Count > 0)
        {
            return jugadores.Peek();
        }
        else
        {
            return null;
        }
    }

Modificación

    public void ActualizarJugador(Jugador jugador)
    {
        if (jugadores.Count > 0)
        {
            Jugador jugadorActual = jugadores.Peek();
            jugadorActual.Nombre = jugador.Nombre;
            jugadorActual.Puntos = jugador.Puntos;
        }
    }

Eliminación

    public void EliminarJugador()
    {
        if (jugadores.Count > 0)
        {
            jugadores.Pop();
        }
    }