En este tema, exploraremos las operaciones fundamentales que se pueden realizar con pilas. Las pilas son estructuras de datos lineales que siguen el principio LIFO (Last In, First Out), lo que significa que el último elemento en entrar es el primero en salir. Las operaciones básicas que se pueden realizar con pilas incluyen:

  1. Push: Añadir un elemento a la pila.
  2. Pop: Eliminar el elemento superior de la pila.
  3. Peek: Obtener el elemento superior de la pila sin eliminarlo.
  4. isEmpty: Verificar si la pila está vacía.
  5. Size: Obtener el número de elementos en la pila.

  1. Push (Apilar)

La operación push añade un elemento al tope de la pila.

Ejemplo en Python:

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

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

# Crear una pila
pila = Pila()

# Añadir elementos a la pila
pila.push(1)
pila.push(2)
pila.push(3)

print(pila.items)  # Salida: [1, 2, 3]

Explicación:

  • __init__: Inicializa una lista vacía para almacenar los elementos de la pila.
  • push: Usa el método append de la lista para añadir un elemento al final de la lista, que representa el tope de la pila.

  1. Pop (Desapilar)

La operación pop elimina y devuelve el elemento superior de la pila.

Ejemplo en Python:

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 "La pila está vacía"

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

# Crear una pila
pila = Pila()

# Añadir elementos a la pila
pila.push(1)
pila.push(2)
pila.push(3)

# Eliminar el elemento superior de la pila
print(pila.pop())  # Salida: 3
print(pila.items)  # Salida: [1, 2]

Explicación:

  • pop: Usa el método pop de la lista para eliminar y devolver el último elemento de la lista, que representa el tope de la pila. Verifica si la pila no está vacía antes de realizar la operación.
  • is_empty: Verifica si la lista está vacía.

  1. Peek (Mirar)

La operación peek devuelve el elemento superior de la pila sin eliminarlo.

Ejemplo en Python:

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 "La pila está vacía"

    def peek(self):
        if not self.is_empty():
            return self.items[-1]
        else:
            return "La pila está vacía"

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

# Crear una pila
pila = Pila()

# Añadir elementos a la pila
pila.push(1)
pila.push(2)
pila.push(3)

# Obtener el elemento superior de la pila sin eliminarlo
print(pila.peek())  # Salida: 3
print(pila.items)  # Salida: [1, 2, 3]

Explicación:

  • peek: Devuelve el último elemento de la lista sin eliminarlo, verificando primero si la pila no está vacía.

  1. isEmpty (Está Vacía)

La operación isEmpty verifica si la pila está vacía.

Ejemplo en Python:

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

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

# Crear una pila
pila = Pila()

# Verificar si la pila está vacía
print(pila.is_empty())  # Salida: True

# Añadir un elemento a la pila
pila.push(1)

# Verificar si la pila está vacía
print(pila.is_empty())  # Salida: False

Explicación:

  • is_empty: Devuelve True si la lista está vacía y False en caso contrario.

  1. Size (Tamaño)

La operación size devuelve el número de elementos en la pila.

Ejemplo en Python:

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

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

# Crear una pila
pila = Pila()

# Añadir elementos a la pila
pila.push(1)
pila.push(2)
pila.push(3)

# Obtener el tamaño de la pila
print(pila.size())  # Salida: 3

Explicación:

  • size: Devuelve la longitud de la lista, que representa el número de elementos en la pila.

Ejercicio Práctico

Ejercicio 1:

Implementa una clase Pila en Python que incluya las operaciones push, pop, peek, is_empty y size. Luego, crea una instancia de la clase y realiza las siguientes operaciones:

  1. Añade los elementos 10, 20 y 30 a la pila.
  2. Muestra el elemento superior de la pila.
  3. Elimina el elemento superior 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 "La pila está vacía"

    def peek(self):
        if not self.is_empty():
            return self.items[-1]
        else:
            return "La pila está vacía"

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

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

# Crear una pila
pila = Pila()

# Añadir elementos a la pila
pila.push(10)
pila.push(20)
pila.push(30)

# Mostrar el elemento superior de la pila
print(pila.peek())  # Salida: 30

# Eliminar el elemento superior de la pila
print(pila.pop())  # Salida: 30

# Verificar si la pila está vacía
print(pila.is_empty())  # Salida: False

# Mostrar el tamaño de la pila
print(pila.size())  # Salida: 2

Retroalimentación sobre errores comunes:

  • Error al usar pop en una pila vacía: Asegúrate de verificar si la pila está vacía antes de intentar eliminar un elemento.
  • Confusión entre peek y pop: Recuerda que peek solo devuelve el elemento superior sin eliminarlo, mientras que pop lo elimina.

Conclusión

En esta sección, hemos aprendido las operaciones básicas que se pueden realizar con pilas: push, pop, peek, is_empty y size. Estas operaciones son fundamentales para trabajar con pilas y se utilizan en diversas aplicaciones en programación. En la siguiente sección, implementaremos una pila desde cero y exploraremos sus aplicaciones prácticas.

© Copyright 2024. Todos los derechos reservados