Creación de una Cola Basada en Listas en Python

Clase 19 de 23Curso de Estructuras de Datos Lineales con Python

Resumen

¿Cómo crear una cola basada en listas?

El concepto de colas es esencial en programación, especialmente en estructuras de datos. Una cola opera bajo el principio "primero en entrar, primero en salir" (FIFO: First In, First Out), lo que significa que el primer elemento en ser introducido en la cola será el primero en salir. En este segmento, abordaremos cómo crear una cola sencilla utilizando listas en Python, uno de los lenguajes de programación más populares hoy en día.

¿Cómo se inicia la construcción de una clase de cola?

Para comenzar, creamos un archivo llamado list_based_queue.py. En este archivo, desarrollamos una clase denominada ListQueue en Python. Esta clase será la base de nuestra estructura de cola. Los pasos iniciales incluyen definir el constructor de la clase, donde se establecerán los atributos:

class ListQueue:
    def __init__(self):
        self.items = []  # Lista vacía para almacenar elementos
        self.size = 0    # Tamaño de la cola

En este constructor, self.items es una lista vacía donde almacenaremos los elementos de la cola, y self.size nos permitirá rastrear el tamaño actual de la cola.

¿Cuáles son los métodos esenciales de una cola?

Los métodos cruciales de una cola son enqueue y dequeue, los cuales se usarán para añadir y eliminar elementos, respectivamente.

  • Enqueue (Añadir elementos): Este método permite agregar elementos al inicio de la cola, incrementando su tamaño.
def enqueue(self, data):
    self.items.insert(0, data)  # Inserta el elemento en la posición cero
    self.size += 1              # Incrementa el tamaño de la cola
  • Dequeue (Remover elementos): Este método elimina elementos desde el frente de la cola, disminuyendo su tamaño.
def dequeue(self):
    if self.size > 0:
        data = self.items.pop()  # Remueve el elemento del final
        self.size -= 1           # Decrementa el tamaño de la cola
        return data
    else:
        return "La cola está vacía"

¿Cómo podemos visualizar los elementos de la cola?

Ver y entender lo que hay en nuestra cola es crucial para cualquier desarrollador. El método traverse nos facilita esto:

def traverse(self):
    total_items = self.size  # Total de elementos
    for i in range(total_items):
        print(self.items[i])  # Imprime cada elemento de la cola

Durante el desarrollo, es común enfrentar errores. Uno podría encontrar que el número de total_items no es iterable debido a una mala especificación. Esto se soluciona, asegurando el uso de un tipo range.

¿Qué sucede durante la ejecución?

Finalmente, en un entorno interactivo de Python, importamos y probamos la clase ListQueue:

from list_based_queue import ListQueue

q = ListQueue()
q.enqueue('eggs')
q.enqueue('ham')
q.enqueue('spam')

print(q.dequeue())    # Salida: 'eggs'
q.traverse()          # Salida: 'spam', 'ham'

Veremos cómo se comportan los elementos de la cola, alineándose al principio FIFO. Así, al usar dequeue en nuestra cola, el primer elemento añadido es el primero en ser removido, lo cual verifica el correcto funcionamiento de nuestro código.

¿Qué sigue después de implementar la cola basada en listas?

Tras la elaboración de una cola con listas, el siguiente paso puede ser desarrollar una estructura de cola basada en dos pilas (stacks). Esto puede sonar intrigante, pero es una técnica popular en entrevistas técnicas de programación. Esta práctica no solo amplía el conocimiento de los desarrolladores sino que también afina sus habilidades para resolver problemas avanzados.

¡Sigue avanzando en esta visión fascinante de las estructuras de datos y continúa reforzando tus habilidades como desarrollador!