Att arbeta med köer

Datastrukturer och algoritmer i Python

Miriam Antona

Software Engineer

Köer

  • FIFO: First-In First-Out

    • Det först tillagda elementet är det första som tas bort

      En bild på en butikskö med tre personer.

Datastrukturer och algoritmer i Python

Köer

  • FIFO: First-In First-Out

    • Det först tillagda elementet är det första som tas bort

      En bild på en butikskö med två personer, eftersom den första personen har lämnat kön.

Datastrukturer och algoritmer i Python

Köer

  • FIFO: First-In First-Out

    • Det först tillagda elementet är det första som tas bort

      En bild på en butikskö med en person, eftersom den första och den andra personen har lämnat kön.

Datastrukturer och algoritmer i Python

Köer – struktur

Schematisk representation av en kö med namn på internationella maträtter.

Datastrukturer och algoritmer i Python

Köer – struktur

Schematisk representation av en kö med namn på internationella maträtter. Ordet "head" pekar på köns början.

  • Början: head
Datastrukturer och algoritmer i Python

Köer – struktur

Schematisk representation av en kö med namn på internationella maträtter. Ordet "tail" pekar på köns slut.

  • Början: head
  • Slut: tail
Datastrukturer och algoritmer i Python

Köer – egenskaper

Schematisk representation av en kö med två internationella maträtter. Ordet "head" pekar på köns början och "tail" på köns slut.

Datastrukturer och algoritmer i Python

Köer – egenskaper

Schematisk representation av en kö. Ett nytt element har lagts till i köns slut.

  • Kan bara lägga till i slutet
    • Enqueue
Datastrukturer och algoritmer i Python

Köer – egenskaper

Schematisk representation av en kö. Det första elementet är överstruket eftersom det ska tas bort.

  • Kan bara lägga till i slutet
    • Enqueue
  • Kan bara ta bort från head
Datastrukturer och algoritmer i Python

Köer – egenskaper

Schematisk representation av en kö med två element, eftersom det första elementet har tagits bort.

  • Kan bara lägga till i slutet
    • Enqueue
  • Kan bara ta bort från head
    • Dequeue
  • Andra typer av köer:
    • Dubbeländade köer
    • Cirkulära köer
    • Prioritetsköer
Datastrukturer och algoritmer i Python

Köer – användningsområden

  • Utskriftsjobb i en skrivare
    • Dokument skrivs ut i den ordning de tas emot
  • Tillämpningar där ordningen på förfrågningar spelar roll
    • Biljetter till en konsert
    • Taxitjänster
Datastrukturer och algoritmer i Python

Köer – implementation

class Node:
  def __init__(self,data):
    self.data = data
    self.next = None
class Queue:
  def __init__(self):
    self.head = None
    self.tail = None
Datastrukturer och algoritmer i Python

Köer – enqueue

def enqueue(self,data):

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

Schematisk representation av en kö med ett element, implementerad med en nod.

Datastrukturer och algoritmer i Python

Köer – enqueue

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

Schematisk representation av en kö med ett element, implementerad med en nod. Orden "head" och "tail" pekar på noden.

Datastrukturer och algoritmer i Python

Köer – enqueue

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

else:

Schematisk representation av en kö med två element, implementerad med noder. En ny nod är redo att läggas till.

Datastrukturer och algoritmer i Python

Köer – 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

Schematisk representation av en kö med tre element. Ordet "tail" pekar fortfarande på den andra noden.

Datastrukturer och algoritmer i Python

Köer – 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

Schematisk representation av en kö med tre element. Ordet "tail" pekar på den senast tillagda noden.

Datastrukturer och algoritmer i Python

Köer – dequeue

Schematisk representation av en kö med tre element. Ordet "head" pekar på den första noden och "tail" på den sista.

def dequeue(self):

if self.head:
Datastrukturer och algoritmer i Python

Köer – dequeue

Schematisk representation av en kö med tre element. Orden "head" och "current_node" pekar på den första noden och "tail" pekar på den sista.

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





Datastrukturer och algoritmer i Python

Köer – dequeue

Schematisk representation av en kö med tre element. Ordet "head" pekar på den första noden, "current_node" pekar på den andra noden och "tail" pekar på den sista.

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




Datastrukturer och algoritmer i Python

Köer – dequeue

Schematisk representation av en kö med två element. Ordet "head" pekar på den första noden och "tail" på den sista. En nod utanför kön har ordet "current_node" pekandes mot sig.

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




Datastrukturer och algoritmer i Python

Köer – dequeue

En nod med orden "current_node" och "tail" pekandes mot den. Ordet "head" pekar på null.

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

if self.head == None:
Datastrukturer och algoritmer i Python

Köer – dequeue

En nod med ordet "current_node" pekandes mot den. Orden "head" och "tail" pekar på 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    
Datastrukturer och algoritmer i Python

SimpleQueue i Python

  • Modul: 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
Datastrukturer och algoritmer i Python

Nu kör vi en övning!

Datastrukturer och algoritmer i Python

Preparing Video For Download...