Tek yönlü bağlı listeler, veri yapıları arasında, özellikle de dinamik veri yönetimine ihtiyaç duyulan durumlar için, benzersiz avantajlar sunar. Bu yapılarda, her bir düğüm (node) bir veri birimi ve bir sonraki düğüme işaret eden bir pointer (işaretçi) içerir. Bu makale, tek yönlü bağlı listelerin temellerini ve düğüm oluşturma işlemlerini, hem ANSI C hem de Python dilleri kullanarak ele alacaktır.

Tek Yönlü Bağlı Listelerin Yapısı

Tek yönlü bağlı listeler, lineer veri yapılarıdır ve bir dizi düğümden oluşurlar. Her düğüm, içerisinde bir ya da birden çok veri ve bir sonraki düğüme işaret eden bir pointer barındırır. Bu yapının sonunda (sondaki düğümde), sonraki düğüme işaret eden bir pointer bulunmaz (NULL veya Python’da None), bu da listenin sonuna ulaşıldığını gösterir.

ANSI C’de Düğüm Tanımlama

ANSI C’de, bir düğüm genellikle bir struct kullanılarak tanımlanır. Bir düğümde veri saklamak ve bir sonraki düğüme işaretçi tutmak için aşağıdaki gibi bir yapı kullanabiliriz:

typedef struct node {
    int data;
    struct node *next;
} node;

Bu yapı, her düğümün bir tam sayı veri tipi ve bir sonraki düğüme işaret eden bir pointer içermesini sağlar.

Python’da Düğüm Tanımlama

Python’da, bir düğümü tanımlamak için bir sınıf tanımlanabilir. Bu sınıf, veri saklamak ve bir sonraki düğüme referans olarak işlev gören bir next özelliği içerir:

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

Bu tanımlama, her düğümün bir veri parçası ve bir sonraki düğüme işaret eden bir referans (next) içermesini sağlar.

malloc Fonksiyonu ve Düğüm Oluşturma

ANSI C’de düğüm oluşturmak için malloc (memory allocation) fonksiyonu kullanılır. malloc, belirli bir boyutta hafıza bloğu tahsis eder ve bu hafıza bloğunun adresini döndürür. Tek yönlü bir bağlı liste düğümü oluşturmak için malloc kullanımı şöyle olabilir:

node* createNode(int data) {
    node *newNode = (node*)malloc(sizeof(node));
    if (newNode == NULL) {
        // Hafıza tahsisi başarısız oldu
        exit(1);
    }
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}

Bu fonksiyon, yeni bir düğüm oluşturur, veri alanını belirtilen data değeri ile doldurur ve next pointer’ını NULL olarak ayarlar. Eğer malloc tarafından tahsis edilen hafıza başarısız olursa, program bir hata mesajı ile çıkış yapar.

Bu makalede, tek yönlü bağlı listelerin temel yapı taşları olan düğümlerin nasıl tanımlandığı ve oluşturulduğu üzerine odaklanılmıştır. Bağlı listeler, veri yapıları içerisinde esneklik ve dinamik büyüme kapasitesi sağlamalarıyla öne çıkarlar. malloc fonksiyonunun anlaşılması, C dilinde veri yapıları ile çalışırken temel bir beceridir.