Bekerja dengan queue

Struktur Data dan Algoritma di Python

Miriam Antona

Software Engineer

Queue

  • FIFO: First-In First-Out

    • Item pertama masuk adalah pertama yang keluar

      Foto antrean supermarket dengan tiga orang.

Struktur Data dan Algoritma di Python

Queue

  • FIFO: First-In First-Out

    • Item pertama masuk adalah pertama yang keluar

      Foto antrean supermarket dengan dua orang karena orang pertama sudah keluar dari antrean.

Struktur Data dan Algoritma di Python

Queue

  • FIFO: First-In First-Out

    • Item pertama masuk adalah pertama yang keluar

      Foto antrean supermarket dengan satu orang karena orang pertama dan kedua sudah keluar dari antrean.

Struktur Data dan Algoritma di Python

Queue - struktur

Representasi skematik queue dengan nama beberapa hidangan internasional.

Struktur Data dan Algoritma di Python

Queue - struktur

Representasi skematik queue dengan nama beberapa hidangan internasional. Kata "head" menunjuk ke awal queue.

  • Awal: head
Struktur Data dan Algoritma di Python

Queue - struktur

Representasi skematik queue dengan nama beberapa hidangan internasional. Kata "tail" menunjuk ke ujung queue.

  • Awal: head
  • Ujung: tail
Struktur Data dan Algoritma di Python

Queue - fitur

Representasi skematik queue dengan nama dua hidangan internasional. Kata "head" menunjuk ke awal queue dan kata "tail" ke ujungnya.

Struktur Data dan Algoritma di Python

Queue - fitur

Representasi skematik queue. Elemen baru dimasukkan di tail.

  • Hanya bisa menambah di ujung
    • Enqueue
Struktur Data dan Algoritma di Python

Queue - fitur

Representasi skematik queue. Elemen pertama dicoret karena akan dihapus.

  • Hanya bisa menambah di ujung
    • Enqueue
  • Hanya bisa menghapus dari awal
Struktur Data dan Algoritma di Python

Queue - fitur

Representasi skematik queue. Queue hanya memiliki dua elemen karena elemen pertama telah dihapus.

  • Hanya bisa menambah di ujung
    • Enqueue
  • Hanya bisa menghapus dari awal
    • Dequeue
  • Jenis queue lain:
    • Deque (doubly ended)
    • Queue sirkular
    • Priority queue
Struktur Data dan Algoritma di Python

Queue - kasus nyata

  • Tugas cetak di printer
    • Dokumen dicetak sesuai urutan diterima
  • Aplikasi di mana urutan permintaan penting
    • Tiket konser
    • Layanan taksi
Struktur Data dan Algoritma di Python

Queue - implementasi

class Node:
  def __init__(self,data):
    self.data = data
    self.next = None
class Queue:
  def __init__(self):
    self.head = None
    self.tail = None
Struktur Data dan Algoritma di Python

Queue - enqueue

def enqueue(self,data):

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

Representasi skematik queue dengan satu elemen. Queue diimplementasikan dengan node.

Struktur Data dan Algoritma di Python

Queue - enqueue

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

Representasi skematik queue dengan satu elemen. Queue diimplementasikan dengan node. Kata "head" dan "tail" menunjuk ke node.

Struktur Data dan Algoritma di Python

Queue - enqueue

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

else:

Representasi skematik queue dengan dua elemen. Queue diimplementasikan dengan node. Node baru siap dimasukkan.

Struktur Data dan Algoritma di Python

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

Representasi skematik queue dengan tiga elemen. Kata "tail" masih menunjuk ke node kedua.

Struktur Data dan Algoritma di Python

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

Representasi skematik queue dengan tiga elemen. Kata "tail" menunjuk ke node yang terakhir dimasukkan.

Struktur Data dan Algoritma di Python

Queue - dequeue

Representasi skematik queue dengan tiga elemen. Kata "head" menunjuk ke node pertama dan kata "tail" ke node terakhir.

def dequeue(self):

if self.head:
Struktur Data dan Algoritma di Python

Queue - dequeue

Representasi skematik queue dengan tiga elemen. Kata "head" dan "current_node" menunjuk ke node pertama dan kata "tail" ke node terakhir.

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





Struktur Data dan Algoritma di Python

Queue - dequeue

Representasi skematik queue dengan tiga elemen. Kata "head" menunjuk ke node pertama, "current_node" ke node kedua, dan "tail" ke node terakhir.

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




Struktur Data dan Algoritma di Python

Queue - dequeue

Representasi skematik queue dengan dua elemen. Kata "head" menunjuk ke node pertama, dan "tail" ke node terakhir. Ada satu node lain di luar queue dengan kata "current_node" menunjuk ke sana.

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




Struktur Data dan Algoritma di Python

Queue - dequeue

Sebuah node dengan kata "current_node" dan "tail" menunjuk ke sana. Kata "head" menunjuk ke null.

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

if self.head == None:
Struktur Data dan Algoritma di Python

Queue - dequeue

Sebuah node dengan kata "current_node" menunjuk ke sana. Kata "head" dan "tail" menunjuk ke 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    
Struktur Data dan Algoritma di Python

SimpleQueue di 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
Struktur Data dan Algoritma di Python

Ayo berlatih!

Struktur Data dan Algoritma di Python

Preparing Video For Download...