Creación de Colas con Stacks en Python
Clase 20 de 23 • Curso de Estructuras de Datos Lineales con Python
Resumen
¿Cómo crear una cola utilizando dos pilas?
Crear una cola usando dos pilas puede parecer un reto, al tratarse de estructuras de datos que funcionan bajo principios diferentes. Mientras que las pilas operan bajo el principio de "último en entrar, primero en salir" (LIFO por sus siglas en inglés), las colas usan "primero en entrar, primero en salir" (FIFO). Pero tranquilo, no es tan complejo como parece, ya que con un entendimiento claro de la lógica, podemos resolverlo de manera eficaz y elegante en Python.
¿Cómo se estructura la clase colas?
Para empezar, crearemos una clase llamada Cue
con dos listas vacías que simulan nuestras pilas internas. Vamos a llamar a estas listas InboundStack
y OutboundStack
.
class Cue:
def __init__(self):
self.inbound_stack = []
self.outbound_stack = []
¿Cómo se implementa el método para agregar a la cola?
El método nq
servirá para añadir datos a nuestra cola. Utilizaremos la lista InboundStack
y su función append()
para ello, lo cual es bastante sencillo.
def nq(self, data):
self.inbound_stack.append(data)
¿Cómo se implementa el método para eliminar de la cola?
El método deck
es más complicado, pero vamos a desglosar su lógica. Debemos atender el funcionamiento FIFO al mover elementos de InboundStack
a OutboundStack
usando el método pop()
. Esto nos permitirá revertir el orden.
def deck(self):
if not self.outbound_stack:
while self.inbound_stack:
self.outbound_stack.append(self.inbound_stack.pop())
return self.outbound_stack.pop()
¿Cómo probar y entender la funcionalidad?
Para verificar el funcionamiento, observemos cómo la clase Cue
interactúa con números:
- Creamos una instancia de la clase y usamos
nq
para añadir números secuenciales: 5, 6, 7. - Usamos
deck
para quitar números y los resultados reflejan el orden FIFO: el 5 saldrá antes que el 6 y 7.
# Simulación en shell de Python
from stack_base_cue import Cue
numbers_queue = Cue()
numbers_queue.nq(5)
numbers_queue.nq(6)
numbers_queue.nq(7)
print(numbers_queue.deck()) # Imprime: 5
Reflexiones finales
El uso de dos pilas para simular una cola no solo es un buen ejercicio lógico, sino una habilidad útil para entrevistas de trabajo técnicas, donde puedes enfrentar restricciones como "usa dos pilas", las cuales te obligan a pensar fuera de las soluciones habituales. Al practicar esto, comprenderás mejor cómo las estructuras de datos están interconectadas y cómo podrías optimizar su uso en el desarrollo de software avanzado. Sigue aprendiendo y explorando, ¡la experiencia vendrá con la práctica!