Las pilas y colas son dos estructuras de datos fundamentales en el mundo de la programación. Este blogpost desglosa sus definiciones, operaciones básicas y aplicaciones prácticas, proporcionando ejemplos claros en Python. ¡Sumérgete en el fascinante mundo de las pilas y colas y mejora tus habilidades de programación!
Introducción
Las estructuras de datos son el pilar fundamental de la informática y la programación. Entre ellas, las pilas y colas destacan por su capacidad para organizar y gestionar datos de manera eficiente. En este artículo, exploraremos a fondo estas dos estructuras, sus operaciones básicas, y veremos ejemplos prácticos en Python que te ayudarán a comprender mejor su funcionamiento y utilidad.
Pilas: Último en Entrar, Primero en Salir (LIFO)
Las pilas funcionan bajo el principio de “último en entrar, primero en salir” (LIFO, por sus siglas en inglés). Esto significa que el último elemento añadido a la pila es el primero en ser retirado. Imagínate una pila de platos: solo puedes retirar el plato que está en la parte superior.
Operaciones Básicas de Pilas
-
push (append()): Agrega un nuevo valor a la pila, ubicándolo al final de ésta.
-
pop(): Retira y retorna el último valor ingresado a la pila.
-
peek(): Retorna el último valor ingresado a la pila, sin retirarlo.
-
size (len()): Retorna el número de elementos en la pila.
-
print(): Muestra el contenido de la pila.
Ejemplo de Implementación de Pilas en Python
stack = []
def peek(stack):
if len(stack) == 0:
return "La pila está vacía"
else:
return stack[-1]
# Añadiendo elementos a la pila
stack.append('a')
stack.append('b')
stack.append('c')
print("Pila inicial:", stack)
print("Tamaño:", len(stack))
print("Elemento en la cima:", peek(stack))
# Eliminando elementos de la pila
print("\nElementos desapilados:")
print(stack.pop())
print(stack.pop())
print(stack.pop())
print("\nPila después de desapilar:", stack)
print("Tamaño:", len(stack))
print("Elemento en la cima:", peek(stack))
Aplicaciones Prácticas de Pilas
- Navegadores Web: Mantienen una pila para gestionar la navegación hacia atrás y adelante.
- Editores de Texto: Implementan funcionalidades de deshacer y rehacer utilizando pilas.
Colas: Primero en Entrar, Primero en Salir (FIFO)
Las colas, por otro lado, siguen el principio de “primero en entrar, primero en salir” (FIFO, por sus siglas en inglés). Esto es similar a una fila de personas en la que el primero en llegar es el primero en ser atendido.
Operaciones Básicas de Colas
-
enqueue (append()): Agrega un nuevo elemento a la cola, situándolo al final de ésta.
-
dequeue (pop(0)): Retira y retorna el primer elemento de la cola.
-
peek(): Retorna el primer elemento de la cola, sin retirarlo.
-
size (len()): Retorna el número de elementos en la cola.
-
print(): Muestra el contenido de la cola.
Ejemplo de Implementación de Colas en Python
queue = []
def peek(queue):
if len(queue) == 0:
return "Cola vacía"
else:
return queue[0]
# Añadiendo elementos a la cola
queue.append('a')
queue.append('b')
queue.append('c')
print("Cola inicial:", queue)
print("Tamaño:", len(queue))
print("Primer elemento:", peek(queue))
# Eliminando elementos de la cola
print("\nElementos desencolados:")
print(queue.pop(0))
print(queue.pop(0))
print(queue.pop(0))
print("\nCola después de desencolar:", queue)
print("Tamaño:", len(queue))
print("Primer elemento:", peek(queue))
Aplicaciones Prácticas de Colas
- Gestión de Tareas: Ideal para sistemas de gestión de tareas y procesamiento por lotes.
- Sistemas de Atención al Cliente: Utilizadas para manejar filas de espera y turnos.
Comparación y Usos de Pilas y Colas
Tanto las pilas como las colas son esenciales para diferentes tipos de algoritmos y estructuras de datos. Mientras que las pilas son útiles en situaciones donde se necesita revertir el orden de los datos (como en la navegación web y la ejecución de subrutinas), las colas son perfectas para gestionar procesos en el orden en que llegan (como en las colas de impresión y las filas en puntos de venta).
Conclusión
Las pilas y colas son herramientas fundamentales en la caja de herramientas de cualquier programador. Entender su funcionamiento y saber cómo implementarlas en Python te permitirá escribir código más eficiente y organizado. Experimenta con los ejemplos proporcionados y descubre cómo estas estructuras de datos pueden simplificar la gestión de información en tus proyectos.
Adicionalmente dejo a continuación dos ejemplos prácticos del uso del concepto de pilas y colas:
Referencias
- EMILIANO BOMAYE ROQUE (Director). (2021, noviembre 21). Estructura de Datos: Pilas y Colas TEORIA. https://www.youtube.com/watch?v=gw1eaJ8FXqY
- Larrañaga, F. (2018, junio 28). Estructuras de datos con JavaScript — Parte 2: Colas (Queues). NodersJS. https://medium.com/noders/estructuras-de-datos-con-javascript-parte-2-colas-queues-dbd86125d3d5
- Larrañaga, F. (2021, enero 11). Estructuras de datos con JavaScript — Parte 1: Pilas (Stacks). NodersJS. https://medium.com/noders/estructuras-de-datos-con-javascript-parte-1-pilas-stacks-5a2092cff16a
- parzibyte. (2021, enero 28). Pila en Python—Estructura de datos. Parzibyte’s blog. https://parzibyte.me/blog/2021/01/28/pila-python-estructura-datos/
- Pila y colas en Python – Part 1 – Barcelona Geeks. (s. f.). Recuperado 10 de abril de 2024, de https://barcelonageeks.com/pila-y-colas-en-python/
- Programación, A. de. (2024, enero 23). Implementación de pilas en Python Código + Explicación . aprendizdeprogramacion.com. https://aprendizdeprogramacion.com/blog/estructuras-de-datos/pilas/implementacion-de-pilas-en-python/
- Queue in Python. (2019, octubre 10). GeeksforGeeks. https://www.geeksforgeeks.org/queue-in-python/
- Raj, A. (2023, junio 21). Implementación de colas en Python. Delft Stack. https://www.delftstack.com/es/howto/python/queue-implementation-in-python/
- Stack in Python. (2019, octubre 9). GeeksforGeeks. https://www.geeksforgeeks.org/stack-in-python/