Trabajar con colas

Estructuras de datos y algoritmos en Python

Miriam Antona

Software Engineer

Colas

  • FIFO: First-In First-Out

    • El primero en entrar es el primero en salir

      Foto de una fila de supermercado con tres personas.

Estructuras de datos y algoritmos en Python

Colas

  • FIFO: First-In First-Out

    • El primero en entrar es el primero en salir

      Foto de una fila de supermercado con dos personas porque la primera salió de la cola.

Estructuras de datos y algoritmos en Python

Colas

  • FIFO: First-In First-Out

    • El primero en entrar es el primero en salir

      Foto de una fila de supermercado con una persona porque la primera y la segunda salieron de la cola.

Estructuras de datos y algoritmos en Python

Colas: estructura

Representación esquemática de una cola con nombres de platos internacionales.

Estructuras de datos y algoritmos en Python

Colas: estructura

Representación esquemática de una cola con nombres de platos internacionales. La palabra "head" señala el inicio de la cola.

  • Inicio: head
Estructuras de datos y algoritmos en Python

Colas: estructura

Representación esquemática de una cola con nombres de platos internacionales. La palabra "tail" señala el final de la cola.

  • Inicio: head
  • Final: tail
Estructuras de datos y algoritmos en Python

Colas: características

Representación esquemática de una cola con los nombres de dos platos internacionales. La palabra "head" señala el inicio de la cola y la palabra "tail" el final.

Estructuras de datos y algoritmos en Python

Colas: características

Representación esquemática de una cola. Se ha insertado un nuevo elemento al final de la cola.

  • Solo se inserta al final
    • Enqueue
Estructuras de datos y algoritmos en Python

Colas: características

Representación esquemática de una cola. El primer elemento de la cola está tachado porque se eliminará.

  • Solo se inserta al final
    • Enqueue
  • Solo se elimina desde el inicio
Estructuras de datos y algoritmos en Python

Colas: características

Representación esquemática de una cola. La cola tiene solo dos elementos porque se eliminó el primero.

  • Solo se inserta al final
    • Enqueue
  • Solo se elimina desde el inicio
    • Dequeue
  • Otros tipos de colas:
    • Doble extremo
    • Circulares
    • De prioridad
Estructuras de datos y algoritmos en Python

Colas: casos de uso reales

  • Tareas de impresión en una impresora
    • Se imprimen en el orden de llegada
  • Aplicaciones donde importa el orden de las solicitudes
    • Entradas para un concierto
    • Servicios de taxi
Estructuras de datos y algoritmos en Python

Colas: implementación

class Node:
  def __init__(self,data):
    self.data = data
    self.next = None
class Queue:
  def __init__(self):
    self.head = None
    self.tail = None
Estructuras de datos y algoritmos en Python

Colas: enqueue

def enqueue(self,data):

new_node = Node(data)
if self.head == None:

Representación esquemática de una cola con un elemento. La cola se implementó con un nodo.

Estructuras de datos y algoritmos en Python

Colas: enqueue

def enqueue(self,data):
  new_node = Node(data)
  if self.head == None:
    self.head = new_node
    self.tail = new_node

Representación esquemática de una cola con un elemento. La cola se implementó con un nodo. Las palabras "head" y "tail" señalan el nodo.

Estructuras de datos y algoritmos en Python

Colas: enqueue

def enqueue(self,data):
  new_node = Node(data)
  if self.head == None:
    self.head = new_node
    self.tail = new_node

else:

Representación esquemática de una cola con dos elementos. La cola se implementó con nodos. Un nuevo nodo está listo para insertarse.

Estructuras de datos y algoritmos en Python

Colas: enqueue

def enqueue(self,data):
  new_node = Node(data)
  if self.head == None:
    self.head = new_node
    self.tail = new_node

else: self.tail.next = new_node

Representación esquemática de una cola con tres elementos. La palabra "tail" aún señala al segundo nodo.

Estructuras de datos y algoritmos en Python

Colas: enqueue

def enqueue(self,data):
  new_node = Node(data)
  if self.head == None:
    self.head = new_node
    self.tail = new_node

else: self.tail.next = new_node self.tail = new_node

Representación esquemática de una cola con tres elementos. La palabra "tail" señala al último nodo insertado.

Estructuras de datos y algoritmos en Python

Colas: dequeue

Representación esquemática de una cola con tres elementos. La palabra "head" señala al primer nodo y la palabra "tail" al último.

def dequeue(self):

if self.head:
Estructuras de datos y algoritmos en Python

Colas: dequeue

Representación esquemática de una cola con tres elementos. Las palabras "head" y "current_node" señalan al primer nodo y la palabra "tail" al último.

def dequeue(self):
  if self.head:
    current_node = self.head





Estructuras de datos y algoritmos en Python

Colas: dequeue

Representación esquemática de una cola con tres elementos. La palabra "head" señala al primer nodo, "current_node" al segundo y "tail" al último.

def dequeue(self):
  if self.head:
    current_node = self.head
    self.head = current_node.next




Estructuras de datos y algoritmos en Python

Colas: dequeue

Representación esquemática de una cola con dos elementos. La palabra "head" señala al primer nodo y "tail" al último. Hay otro nodo fuera de la cola con la palabra "current_node" señalándolo.

def dequeue(self):
  if self.head:
    current_node = self.head
    self.head = current_node.next
    current_node.next = None




Estructuras de datos y algoritmos en Python

Colas: dequeue

Un nodo con las palabras "current_node" y "tail" señalándolo. La palabra "head" señala a null.

def dequeue(self):
  if self.head:
    current_node = self.head
    self.head = current_node.next
    current_node.next = None

if self.head == None:
Estructuras de datos y algoritmos en Python

Colas: dequeue

Un nodo con la palabra "current_node" señalándolo. Las palabras "head" y "tail" señalan a null.

def dequeue(self):
  if self.head:
    current_node = self.head
    self.head = current_node.next
    current_node.next = None

    if self.head == None:
      self.tail = None    
Estructuras de datos y algoritmos en Python

SimpleQueue en Python

  • Módulo: queue
    • Queue
    • SimpleQueue
import queue


orders_queue = queue.SimpleQueue()
orders_queue.put("Sushi") orders_queue.put("Lasagna") orders_queue.put("Paella")
print("The size is: ", orders_queue.qsize())
The size is: 3
print(orders_queue.get())
print(orders_queue.get())
print(orders_queue.get())
Sushi
Lasagna
Paella
print("Empty queue: ", orders_queue.empty())
Empty queue: True
Estructuras de datos y algoritmos en Python

¡Vamos a practicar!

Estructuras de datos y algoritmos en Python

Preparing Video For Download...