Queue (Kuyruk)
Queue (Kuyruk), bir veri yapısıdır ve ilk giren, ilk çıkar (First In, First Out - FIFO) ilkesine göre çalışır. Yani, kuyruğa ilk eklenen öğe, ilk çıkarılacak olan öğedir.
Kuyruk Operasyonları:
Enqueue: Kuyruğun sonuna bir öğe ekler.
Dequeue: Kuyruğun başından bir öğe çıkarır ve döndürür.
Front: Kuyruğun başındaki öğeyi döndürür, ancak çıkarmaz.
Rear: Kuyruğun sonundaki öğeyi döndürür.
IsEmpty: Kuyruğun boş olup olmadığını kontrol eder.
Size: Kuyruğun boyutunu, yani içindeki öğe sayısını döndürür.
Kuyruk Kullanım Alanları:
Kuyruklar, birçok alanda kullanılır, özellikle:
İşletim Sistemleri: İşlem planlamada, işlemlerin ne sırayla yürütüleceğini belirlemek için kullanılır.
Yazıcılar: Birden fazla belgenin yazdırılmasını sıraya almak için kullanılır.
Ağ Talepleri: Web sunucuları, istekleri sırayla işlemek üzere kuyruğa alabilir.
BFS (Genişlik İlk Arama) gibi grafik tarama algoritmalarında.
Python'da Kuyruk Oluşturma:
Python'da kuyruk oluşturmak için çeşitli yollar vardır. Standart bir liste kullanarak veya queue modülü kullanarak kuyruk oluşturabilirsiniz.
Liste Kullanarak:
queue = [] queue.append(5) # Enqueue queue.append(10) # Enqueue first_item = queue.pop(0) # Dequeue
queue Modülü Kullanarak:
from queue import Queue q = Queue() q.put(5) # Enqueue q.put(10) # Enqueue first_item = q.get() # Dequeue
queue modülü, Queue, LifoQueue (Yığına benzer bir yapı), ve PriorityQueue (öncelikli kuyruk) gibi farklı kuyruk türlerini destekler.
Kuyruk veri yapısı, mantığı ve kullanımı oldukça basittir, ancak işlem planlamadan, ağ hizmetlerine, veri akışının düzenlenmesine kadar birçok alanda hayati bir rol oynar.
LifoQueue
LifoQueue (Last In, First Out Queue), bir yığın (stack) gibi davranan bir kuyruk türüdür. Son eklenen öğe ilk çıkarılır. Bu, geleneksel bir kuyruk yapısının tam tersidir.
LifoQueue kullanım örneği:
from queue import LifoQueue lifo = LifoQueue() lifo.put(5) lifo.put(10) item = lifo.get() # 10 değerini döndürür, çünkü en son eklenen öğeydi
PriorityQueue
PriorityQueue, her öğenin bir önceliği olduğu ve öncelik değerine göre sıralandığı bir kuyruk türüdür. En düşük öncelikli öğe ilk çıkarılır. Eğer öğelerin önceliği aynıysa, ilk eklenen öğe ilk çıkarılır.
Öğeler genellikle (öncelik, öğe) şeklinde bir çift (tuple) olarak eklenir, burada "öncelik" bir sayısal değer olabilir. Daha düşük sayılar daha yüksek öncelik anlamına gelir.
PriorityQueue kullanım örneği:
from queue import PriorityQueue pq = PriorityQueue() pq.put((2, "Orta öncelik")) pq.put((1, "Yüksek öncelik")) pq.put((3, "Düşük öncelik")) item = pq.get() # "Yüksek öncelik" değerini döndürür, çünkü en düşük öncelik değerine sahip
Sonuç
LifoQueue: Son eklenen öğenin ilk çıkarıldığı bir kuyruk türüdür (yığın gibi davranır).
PriorityQueue: Öğelerin önceliklerine göre sıralandığı bir kuyruk türüdür. En düşük öncelik değerine sahip öğe ilk çıkarılır.
Bu iki kuyruk türü, farklı kullanım senaryoları ve ihtiyaçlara göre kullanışlı olabilir. Örneğin, işlem planlamada öncelikli kuyruk, belirli işlemlere öncelik vermek istediğinizde kullanılabilir.
0 Comments
Recommended Comments
There are no comments to display.