Tek Bağlantılı Liste ile Kuyruk Uygulama
Kuyruk (queue), ilk giren ilk çıkar (First-In-First-Out veya FIFO) prensibine göre çalışan bir veri yapısıdır. Bu, bir kuyruğa eklenen ilk öğenin, aynı zamanda kuyruktan çıkarılan ilk öğe olacağı anlamına gelir.
Tek yönlü bağlı bir liste kullanarak bir kuyruk uygulamak da mümkündür. Baş düğüm, kuyruğun önünü temsil eder, ve son düğüm, kuyruğun sonunu temsil eder.
Kuyruk İmplementasyonu
class Node: def __init__(self, data=None): self.data = data self.next = None class Queue: def __init__(self): self.front = None self.rear = None def is_empty(self): return self.front is None def enqueue(self, data): new_node = Node(data) if self.rear is None: self.front = self.rear = new_node # Kuyruk boşsa yeni düğüm hem ön hem de arka olur return self.rear.next = new_node # Mevcut arka düğümün sonrakine yeni düğümü ata self.rear = new_node # Arka düğümü yeni düğüm olarak güncelle def dequeue(self): if self.is_empty(): return None # Kuyruk boş ise None döndür value = self.front.data # Ön düğümün değerini al self.front = self.front.next # Ön düğümü bir sonraki düğüme güncelle if self.front is None: self.rear = None # Eğer kuyruk şimdi boşsa, arka düğümü de None yap return value
Açıklamalar:
Enqueue İşlemi: Bu, bir öğeyi kuyruğa ekler. Yeni bir düğüm oluşturulur, ve eğer kuyruk boşsa, bu düğüm hem ön hem de arka düğüm olur. Eğer değilse, arka düğümün next referansı yeni düğüme işaret eder, ve arka düğüm, yeni düğüm olarak güncellenir.
Dequeue İşlemi: Bu, kuyruktan bir öğeyi çıkarır. Ön düğümün değeri alınır, ve ön düğüm, bir sonraki düğüme güncellenir. Eğer kuyruk boş hale gelirse, arka düğüm de None olarak güncellenir.
Is_Empty İşlemi: Kuyruğun boş olup olmadığını kontrol etmek için kullanılır.
Bu uygulama, enqueue işlemini O(1) zaman karmaşıklığıyla ve dequeue işlemini de O(1) zaman karmaşıklığıyla gerçekleştirmenizi sağlar. Tek yönlü bağlı liste, kuyruk veri yapısını temsil etmek için uygun bir yapı sunar.
0 Comments
Recommended Comments
There are no comments to display.