Trabalhando com filas

Estruturas de Dados e Algoritmos em Python

Miriam Antona

Software Engineer

Filas

  • FIFO: First-In First-Out

    • O primeiro inserido é o primeiro a ser removido

      Foto de uma fila de supermercado com três pessoas.

Estruturas de Dados e Algoritmos em Python

Filas

  • FIFO: First-In First-Out

    • O primeiro inserido é o primeiro a ser removido

      Foto de uma fila de supermercado com duas pessoas porque a primeira saiu da fila.

Estruturas de Dados e Algoritmos em Python

Filas

  • FIFO: First-In First-Out

    • O primeiro inserido é o primeiro a ser removido

      Foto de uma fila de supermercado com uma pessoa porque a primeira e a segunda saíram da fila.

Estruturas de Dados e Algoritmos em Python

Filas - estrutura

Representação esquemática de uma fila com nomes de pratos internacionais.

Estruturas de Dados e Algoritmos em Python

Filas - estrutura

Representação esquemática de uma fila com nomes de pratos internacionais. A palavra "head" aponta para o início da fila.

  • Início: head
Estruturas de Dados e Algoritmos em Python

Filas - estrutura

Representação esquemática de uma fila com nomes de pratos internacionais. A palavra "tail" aponta para o fim da fila.

  • Início: head
  • Fim: tail
Estruturas de Dados e Algoritmos em Python

Filas - características

Representação esquemática de uma fila com os nomes de dois pratos internacionais. A palavra "head" aponta para o início da fila e a palavra "tail" para o fim.

Estruturas de Dados e Algoritmos em Python

Filas - características

Representação esquemática de uma fila. Um novo elemento foi inserido no tail da fila.

  • Só pode inserir no fim
    • Enqueue
Estruturas de Dados e Algoritmos em Python

Filas - características

Representação esquemática de uma fila. O primeiro elemento está riscado porque será removido.

  • Só pode inserir no fim
    • Enqueue
  • Só pode remover do início
Estruturas de Dados e Algoritmos em Python

Filas - características

Representação esquemática de uma fila. A fila tem só dois elementos porque o primeiro foi removido.

  • Só pode inserir no fim
    • Enqueue
  • Só pode remover do início
    • Dequeue
  • Outros tipos de filas:
    • Duplamente terminadas
    • Circulares
    • De prioridade
Estruturas de Dados e Algoritmos em Python

Filas - casos de uso reais

  • Tarefas de impressão na impressora
    • Documentos são impressos na ordem de chegada
  • Aplicações onde a ordem dos pedidos importa
    • Ingressos para shows
    • Serviços de táxi
Estruturas de Dados e Algoritmos em Python

Filas - implementação

class Node:
  def __init__(self,data):
    self.data = data
    self.next = None
class Queue:
  def __init__(self):
    self.head = None
    self.tail = None
Estruturas de Dados e Algoritmos em Python

Filas - enqueue

def enqueue(self,data):

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

Representação esquemática de uma fila com um elemento. A fila foi implementada com um nó.

Estruturas de Dados e Algoritmos em Python

Filas - enqueue

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

Representação esquemática de uma fila com um elemento. A fila foi implementada com um nó. As palavras "head" e "tail" apontam para o nó.

Estruturas de Dados e Algoritmos em Python

Filas - enqueue

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

else:

Representação esquemática de uma fila com dois elementos. Implementada com nós. Um novo nó está pronto para ser inserido.

Estruturas de Dados e Algoritmos em Python

Filas - 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

Representação esquemática de uma fila com três elementos. A palavra "tail" ainda aponta para o segundo nó.

Estruturas de Dados e Algoritmos em Python

Filas - 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

Representação esquemática de uma fila com três elementos. A palavra "tail" aponta para o último nó inserido.

Estruturas de Dados e Algoritmos em Python

Filas - dequeue

Representação esquemática de uma fila com três elementos. A palavra "head" aponta para o primeiro nó e a palavra "tail" para o último.

def dequeue(self):

if self.head:
Estruturas de Dados e Algoritmos em Python

Filas - dequeue

Representação esquemática de uma fila com três elementos. As palavras "head" e "current_node" apontam para o primeiro nó e a palavra "tail" para o último.

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





Estruturas de Dados e Algoritmos em Python

Filas - dequeue

Representação esquemática de uma fila com três elementos. A palavra "head" aponta para o primeiro nó, "current_node" para o segundo, e "tail" para o último.

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




Estruturas de Dados e Algoritmos em Python

Filas - dequeue

Representação esquemática de uma fila com dois elementos. A palavra "head" aponta para o primeiro nó e "tail" para o último. Há outro nó fora da fila com "current_node" apontando para ele.

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




Estruturas de Dados e Algoritmos em Python

Filas - dequeue

Um nó com as palavras "current_node" e "tail" apontando para ele. A palavra "head" aponta para null.

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

if self.head == None:
Estruturas de Dados e Algoritmos em Python

Filas - dequeue

Um nó com a palavra "current_node" apontando para ele. As palavras "head" e "tail" apontam para 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    
Estruturas de Dados e Algoritmos em Python

SimpleQueue em 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
Estruturas de Dados e Algoritmos em Python

Vamos praticar!

Estruturas de Dados e Algoritmos em Python

Preparing Video For Download...