Jump to content
  • entries
    33
  • comments
    0
  • views
    1,227

Tek Bağlantılı Liste ile Kuyruk Uygulama


Doğuhan ELMA

66 views

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.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...