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:
- Push: Añadir un elemento a la pila.
- Pop: Eliminar el elemento superior de la pila.
- Peek: Obtener el elemento superior de la pila sin eliminarlo.
- isEmpty: Verificar si la pila está vacía.
- Size: Obtener el número de elementos en la pila.
- 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étodoappendde la lista para añadir un elemento al final de la lista, que representa el tope de la pila.
- 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étodopopde 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.
- 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.
- 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: FalseExplicación:
is_empty: DevuelveTruesi la lista está vacía yFalseen caso contrario.
- 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: 3Explicació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:
- Añade los elementos
10,20y30a la pila. - Muestra el elemento superior de la pila.
- Elimina el elemento superior de la pila.
- Verifica si la pila está vacía.
- 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: 2Retroalimentación sobre errores comunes:
- Error al usar
popen una pila vacía: Asegúrate de verificar si la pila está vacía antes de intentar eliminar un elemento. - Confusión entre
peekypop: Recuerda quepeeksolo devuelve el elemento superior sin eliminarlo, mientras quepoplo 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.
Curso de Estructuras de Datos
Módulo 1: Introducción a las Estructuras de Datos
- ¿Qué son las Estructuras de Datos?
- Importancia de las Estructuras de Datos en la Programación
- Tipos de Estructuras de Datos
Módulo 2: Listas
- Introducción a las Listas
- Listas Enlazadas
- Listas Doblemente Enlazadas
- Listas Circulares
- Ejercicios con Listas
Módulo 3: Pilas
- Introducción a las Pilas
- Operaciones Básicas con Pilas
- Implementación de Pilas
- Aplicaciones de las Pilas
- Ejercicios con Pilas
Módulo 4: Colas
- Introducción a las Colas
- Operaciones Básicas con Colas
- Colas Circulares
- Colas de Prioridad
- Ejercicios con Colas
Módulo 5: Árboles
- Introducción a los Árboles
- Árboles Binarios
- Árboles Binarios de Búsqueda
- Árboles AVL
- Árboles B
- Ejercicios con Árboles
Módulo 6: Grafos
- Introducción a los Grafos
- Representación de Grafos
- Algoritmos de Búsqueda en Grafos
- Algoritmos de Caminos Mínimos
- Aplicaciones de los Grafos
- Ejercicios con Grafos
