¿Qué es una Pila?

Una pila es una estructura de datos lineal que sigue el principio de LIFO (Last In, First Out), es decir, el último elemento en entrar es el primero en salir. Imagina una pila de platos: el último plato que colocas en la pila es el primero que retirarás cuando necesites uno.

Características de una Pila:

  • LIFO (Last In, First Out): El último elemento añadido es el primero en ser removido.
  • Operaciones básicas: Las operaciones principales son push (para añadir un elemento) y pop (para remover el elemento superior).

Operaciones Básicas en una Pila

  1. Push

Añade un elemento al tope de la pila.

  1. Pop

Remueve el elemento del tope de la pila y lo devuelve.

  1. Peek (o Top)

Devuelve el elemento del tope de la pila sin removerlo.

  1. isEmpty

Verifica si la pila está vacía.

  1. Size

Devuelve el número de elementos en la pila.

Ejemplo en Python

A continuación, se muestra una implementación básica de una pila en Python utilizando una lista:

class Pila:
    def __init__(self):
        self.items = []

    def push(self, item):
        self.items.append(item)
        print(f"Elemento {item} añadido a la pila.")

    def pop(self):
        if not self.is_empty():
            item = self.items.pop()
            print(f"Elemento {item} removido de la pila.")
            return item
        else:
            print("La pila está vacía. No se puede realizar la operación pop.")
            return None

    def peek(self):
        if not self.is_empty():
            return self.items[-1]
        else:
            print("La pila está vacía. No hay elementos para mostrar.")
            return None

    def is_empty(self):
        return len(self.items) == 0

    def size(self):
        return len(self.items)

# Ejemplo de uso
pila = Pila()
pila.push(1)
pila.push(2)
pila.push(3)
print(f"Elemento en el tope de la pila: {pila.peek()}")
pila.pop()
print(f"Tamaño de la pila: {pila.size()}")

Explicación del Código:

  1. Clase Pila: Define una pila con una lista interna items para almacenar los elementos.
  2. Método push: Añade un elemento al final de la lista.
  3. Método pop: Remueve y devuelve el último elemento de la lista, si la pila no está vacía.
  4. Método peek: Devuelve el último elemento de la lista sin removerlo.
  5. Método is_empty: Verifica si la lista está vacía.
  6. Método size: Devuelve el número de elementos en la lista.

Ejercicio Práctico

Ejercicio 1:

Implementa una pila que pueda almacenar cadenas de texto y realiza las siguientes operaciones:

  1. Añade las cadenas "Hola", "Mundo" y "Python".
  2. Muestra el elemento en el tope de la pila.
  3. Remueve el elemento en el tope de la pila.
  4. Verifica si la pila está vacía.
  5. Muestra el tamaño de la pila.

Solución:

class Pila:
    def __init__(self):
        self.items = []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        if not self.is_empty():
            return self.items.pop()
        else:
            return None

    def peek(self):
        if not self.is_empty():
            return self.items[-1]
        else:
            return None

    def is_empty(self):
        return len(self.items) == 0

    def size(self):
        return len(self.items)

# Ejercicio
pila = Pila()
pila.push("Hola")
pila.push("Mundo")
pila.push("Python")

print(f"Elemento en el tope de la pila: {pila.peek()}")  # Debería mostrar "Python"
pila.pop()  # Remueve "Python"
print(f"¿La pila está vacía?: {pila.is_empty()}")  # Debería mostrar False
print(f"Tamaño de la pila: {pila.size()}")  # Debería mostrar 2

Retroalimentación:

  • Error común: Intentar realizar pop o peek en una pila vacía. Asegúrate de verificar si la pila está vacía antes de realizar estas operaciones.
  • Consejo: Utiliza is_empty para evitar errores al intentar acceder a elementos en una pila vacía.

Conclusión

En esta lección, hemos aprendido qué es una pila, sus características y operaciones básicas. También hemos implementado una pila simple en Python y realizado algunos ejercicios prácticos para reforzar los conceptos. En la siguiente lección, profundizaremos en las operaciones básicas con pilas y exploraremos más ejemplos prácticos.

© Copyright 2024. Todos los derechos reservados