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

Tek Yönlü Bağlı Listeler (Singly Linked Lists)


Doğuhan ELMA

62 views

Tek yönlü bağlı listeler (singly linked lists) hakkında daha ayrıntılı bir açıklama yapacağım.

Tek yönlü bağlı liste, düğümlerin birbirine yalnızca bir yönde bağlandığı bir veri yapısıdır. Her düğüm, bir veri öğesi ve sonraki düğüme işaret eden bir referans içerir. Son düğüm, genellikle NULL referansına sahip olur, bu liste sonunun işaretçisidir.

Tek Yönlü Bağlı Liste Yapısı:

Düğüm (Node): Veri ve sonraki düğüme işaret eden bir referans içerir.

Baş Düğüm (Head): Listenin ilk düğümüdür ve bütün düğümlere erişim bu düğümden başlar.

Kuyruk (Tail): Listenin son düğümüdür ve genellikle NULL'a işaret eder.

"Link hopping" ya da "pointer hopping," bağlı listeler gibi veri yapıları içinde kullanılan bir terimdir. Özellikle tek yönlü bağlı listelerde (singly linked lists) kullanılır.

Bu terim, bir bağlı listenin düğümleri arasında hareket etmeyi ifade eder. Her düğüm, sonraki düğümün adresini veya referansını içerir, böylece bir düğümden diğerine "atlamak" mümkün olur. Her atlamada, şu anki düğümün referansının sonraki düğüme işaret ettiği bir sonraki düğüme geçilir.

Bu atlamalar, bağlı listeler üzerinde işlemler yaparken oldukça yaygındır. Örneğin, bir bağlı listenin sonundaki bir öğeyi bulmak için başlangıç düğümünden başlayıp son düğüme kadar bu şekilde atlamak gerekir.

1.png

1.webp

İşte basit bir Python örneği:

class Node:
    def __init__(self, data=None):
        self.data = data # Düğümün veri kısmı
        self.next = None # Sonraki düğüme işaret eder, varsayılan olarak None

class SinglyLinkedList:
    def __init__(self):
        self.head = None # Başlangıçta liste boş, baş düğüm None

    def append(self, data):
        new_node = Node(data) # Yeni düğüm oluşturuluyor
        if not self.head: # Eğer liste boş ise
            self.head = new_node # Yeni düğüm baş düğüm olur
            return
        last_node = self.head 
        while last_node.next: # Son düğüme ulaşana kadar ilerlenir
            last_node = last_node.next
        last_node.next = new_node # Son düğümün next referansı yeni düğüme işaret eder

    def print_list(self):
        current_node = self.head # Baş düğümden başlanır
        while current_node: # Liste sonuna kadar devam eder
            print(current_node.data, end=" ") # Şu anki düğümün verisini yazdırır
            current_node = current_node.next # Sonraki düğüme geçer

İşlemler:

Ekleme (Insertion): Verilen bir değeri listeye eklemek. Bu, başa, ortaya veya sona olabilir.

Silme (Deletion): Verilen bir değeri veya belirli bir konumdaki düğümü listeden silmek.

Arama (Search): Belirli bir değeri içeren düğümü aramak.

Uzunluk (Length): Listenin uzunluğunu bulmak.

Avantajları:

Dinamik boyut: Liste boyutunu dinamik olarak değiştirebilirsiniz.

Ekleme ve silme verimli: Başa ekleme O(1), orta ve sona ekleme O(n) zaman alır.

Dezavantajları:

Erişim zamanı: Rastgele bir düğüme erişmek, O(n) zaman alır.

Ekstra bellek kullanımı: Her düğüm, bir sonraki düğüme olan referansı nedeniyle ekstra bellek kullanır.

Tek yönlü bağlı listeler, düğümlerin yalnızca bir yönde bağlı olduğu basit bir veri yapısıdır. Uygulamaya bağlı olarak çeşitli avantajlar ve dezavantajlar sunarlar.

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