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étodoappend
de 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étodopop
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.
- 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: False
Explicación:
is_empty
: DevuelveTrue
si la lista está vacía yFalse
en 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: 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:
- Añade los elementos
10
,20
y30
a 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: 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
ypop
: Recuerda quepeek
solo devuelve el elemento superior sin eliminarlo, mientras quepop
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.
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