¿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) ypop
(para remover el elemento superior).
Operaciones Básicas en una Pila
- Push
Añade un elemento al tope de la pila.
- Pop
Remueve el elemento del tope de la pila y lo devuelve.
- Peek (o Top)
Devuelve el elemento del tope de la pila sin removerlo.
- isEmpty
Verifica si la pila está vacía.
- 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:
- Clase
Pila
: Define una pila con una lista internaitems
para almacenar los elementos. - Método
push
: Añade un elemento al final de la lista. - Método
pop
: Remueve y devuelve el último elemento de la lista, si la pila no está vacía. - Método
peek
: Devuelve el último elemento de la lista sin removerlo. - Método
is_empty
: Verifica si la lista está vacía. - 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:
- Añade las cadenas "Hola", "Mundo" y "Python".
- Muestra el elemento en el tope de la pila.
- Remueve el elemento en el tope 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 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
opeek
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.
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