Kuyruklarla çalışma

Python'da Veri Yapıları ve Algoritmalar

Miriam Antona

Software Engineer

Kuyruklar

  • FIFO: First-In First-Out

    • İlk eklenen, ilk çıkarılır

      Üç kişilik bir süpermarket sırasının fotoğrafı.

Python'da Veri Yapıları ve Algoritmalar

Kuyruklar

  • FIFO: First-In First-Out

    • İlk eklenen, ilk çıkarılır

      İlk kişi kuyruktan ayrıldığı için iki kişilik bir süpermarket sırasının fotoğrafı.

Python'da Veri Yapıları ve Algoritmalar

Kuyruklar

  • FIFO: First-In First-Out

    • İlk eklenen, ilk çıkarılır

      İlk iki kişi kuyruktan ayrıldığı için bir kişilik bir süpermarket sırasının fotoğrafı.

Python'da Veri Yapıları ve Algoritmalar

Kuyruklar - yapı

Bazı uluslararası yemek adlarının yer aldığı bir kuyruk şeması.

Python'da Veri Yapıları ve Algoritmalar

Kuyruklar - yapı

Bazı uluslararası yemek adlarının yer aldığı bir kuyruk şeması. "head" sözcüğü kuyruğun başını gösteriyor.

  • Başlangıç: head
Python'da Veri Yapıları ve Algoritmalar

Kuyruklar - yapı

Bazı uluslararası yemek adlarının yer aldığı bir kuyruk şeması. "tail" sözcüğü kuyruğun sonunu gösteriyor.

  • Başlangıç: head
  • Son: tail
Python'da Veri Yapıları ve Algoritmalar

Kuyruklar - özellikler

İki uluslararası yemek adının yer aldığı bir kuyruk şeması. "head" kuyruğun başını, "tail" kuyruğun sonunu gösteriyor.

Python'da Veri Yapıları ve Algoritmalar

Kuyruklar - özellikler

Bir kuyruk şeması. Kuyruğun sonuna yeni bir öğe eklendi.

  • Yalnızca sona ekleme
    • Enqueue
Python'da Veri Yapıları ve Algoritmalar

Kuyruklar - özellikler

Bir kuyruk şeması. İlk öğe çıkarılacağı için üstü çizili.

  • Yalnızca sona ekleme
    • Enqueue
  • Yalnızca baştan çıkarma
Python'da Veri Yapıları ve Algoritmalar

Kuyruklar - özellikler

Bir kuyruk şeması. İlk öğe çıkarıldığı için kuyrukta yalnızca iki öğe var.

  • Yalnızca sona ekleme
    • Enqueue
  • Yalnızca baştan çıkarma
    • Dequeue
  • Diğer kuyruk türleri:
    • Çift uçlu kuyruklar
    • Dairesel kuyruklar
    • Öncelikli kuyruklar
Python'da Veri Yapıları ve Algoritmalar

Kuyruklar - gerçek yaşam kullanım alanları

  • Yazıcıda yazdırma görevleri
    • Belgeler alınma sırasıyla yazdırılır
  • İstek sırası önemli uygulamalar
    • Konser biletleri
    • Taksi hizmetleri
Python'da Veri Yapıları ve Algoritmalar

Kuyruklar - uygulama

class Node:
  def __init__(self,data):
    self.data = data
    self.next = None
class Queue:
  def __init__(self):
    self.head = None
    self.tail = None
Python'da Veri Yapıları ve Algoritmalar

Kuyruklar - enqueue

def enqueue(self,data):

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

Tek öğeli bir kuyruğun şeması. Kuyruk bir düğümle uygulanmıştır.

Python'da Veri Yapıları ve Algoritmalar

Kuyruklar - enqueue

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

Tek öğeli bir kuyruğun şeması. Kuyruk bir düğümle uygulanmıştır. "head" ve "tail" düğümü gösteriyor.

Python'da Veri Yapıları ve Algoritmalar

Kuyruklar - enqueue

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

else:

İki öğeli bir kuyruğun şeması. Kuyruk düğümlerle uygulanmıştır. Yeni bir düğüm eklenmeye hazırlanıyor.

Python'da Veri Yapıları ve Algoritmalar

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

Üç öğeli bir kuyruğun şeması. "tail" hâlâ ikinci düğümü gösteriyor.

Python'da Veri Yapıları ve Algoritmalar

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

Üç öğeli bir kuyruğun şeması. "tail" son eklenen düğümü gösteriyor.

Python'da Veri Yapıları ve Algoritmalar

Kuyruklar - dequeue

Üç öğeli bir kuyruğun şeması. "head" ilk düğümü, "tail" son düğümü gösteriyor.

def dequeue(self):

if self.head:
Python'da Veri Yapıları ve Algoritmalar

Kuyruklar - dequeue

Üç öğeli bir kuyruğun şeması. "head" ve "current_node" ilk düğümü, "tail" son düğümü gösteriyor.

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





Python'da Veri Yapıları ve Algoritmalar

Kuyruklar - dequeue

Üç öğeli bir kuyruğun şeması. "head" ilk düğümü, "current_node" ikinciyi, "tail" son düğümü gösteriyor.

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




Python'da Veri Yapıları ve Algoritmalar

Kuyruklar - dequeue

İki öğeli bir kuyruğun şeması. "head" ilk düğümü, "tail" son düğümü gösteriyor. Kuyruktan ayrı bir düğüme "current_node" işaret ediyor.

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




Python'da Veri Yapıları ve Algoritmalar

Kuyruklar - dequeue

"current_node" ve "tail"in işaret ettiği bir düğüm. "head" null'u gösteriyor.

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

if self.head == None:
Python'da Veri Yapıları ve Algoritmalar

Kuyruklar - dequeue

"current_node"un işaret ettiği bir düğüm. "head" ve "tail" null'u gösteriyor.

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    
Python'da Veri Yapıları ve Algoritmalar

Python'da SimpleQueue

  • Modül: 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
Python'da Veri Yapıları ve Algoritmalar

Haydi pratik yapalım!

Python'da Veri Yapıları ve Algoritmalar

Preparing Video For Download...