Home / Veri Yapıları / Bağlı Liste (Linked List) Sonuna Eleman Ekleme

Bağlı Liste (Linked List) Sonuna Eleman Ekleme

Bir önceki yazımızda Bağlı liste oluşturma sürecinden bahsetmiştik. Bu yazımızda Bağlı listenin sonuna eleman eklemeyi inceleyeceğiz. Bunu normal bir eleman ekleme işlemi gibi de düşünebilirsiniz.

Sona eleman ekleme işlemini anlamak için, bağlı listelerin birbirlerine nasıl bağlı olduklarını bilmemiz lazım. Şimdi aşağıdaki görsele bakalım.

Yukarıda gördüğünüz üzere herbir düğüm sonraki düğümü işaret etmektedir. Peki son düğüm nereyi işaret eder? Son düğüm daima null değerini işaret etmektedir. Yani bizim bağlı listenin sonuna eleman ekleyebilmemiz için null’u işaret eden düğümü bulup, onun önüne elemanımızı eklememiz gerekmektedir. Tabii ki sona eklediğimiz düğüm de null’u işaret edecek şekilde güncellenmelidir.

Tüm bu işlemleri yapabilmemiz için, null’u işaret eden düğümü bulmamız gerekir. Peki bunu nasıl yaparız? Bunun için Traverse dediğimiz, dolaşma anlamına gelen bir kod yazmalıyız. Bu işlem lineer olarak tüm düğümleri kontrol ederek, şartımızı sağlayan düğümü bulmamızı sağlayacaktır.

Linked List Traverse İşlemi

Tahmin edeceğiniz üzere tüm düğümleri dolaşmamız için bize bir döngü (loop) gerekecektir. Ve bu döngüye şart eklememiz gerekecek. Bu şart düğümün işaret ettiği değerin NULL olmasını gerekmektedir. Bu iş için en uygun döngü While olacaktır. Zira While döngüsünde biz şart oluşturabilmekteyiz, tıpkı if’teki gibi.

         //başlangıç düğümünü temp isimli bir düğüme atadık
        temp = start;
        // Eğer temp değerinin next'i NULL değilse dönmeye devam et diyoruz.
        while(temp->next != NULL)
        {
            //her döngüde temp değerimize bir sonraki düğümü atıyoruz.
            //Böylece şartımız sağlanıncaya kadar döngü dönüyor
            temp = temp->next;
        }

Buraya kadar Traverse işlemini yaptık, peki eleman eklemeyi nasıl yapacağız? Çok basit, traverse işlemi sonucunda temp değişkenimiz doğal olarak son eleman haline geldi. temp->next değerine atamak istediğimiz elemanı barındıran düğümü atayarak işlemi tamamlarız. Tabii bu elemanın next değerine null atarız.

Merak etmeyin, size tüm kodu paylaşıyorum. Burada her şeyi çok daha net göreceksiniz.

Linked List (Bağlı Liste) Sona Eleman Ekleme C Kodu

//Düğüm yapımızı burada inşa ettik
struct node{
    int data;
    struct node *next;
};

//ilk olarak başlangıç düğümü oluşturduk ve buna NULL verdik
struct node* start = NULL;
struct node* temp;

//Çağrıldığında bize yeni bir düğüm oluşturup return eden fonksiyon
struct node* createNode()
{
    struct node* newNode = (struct node*)malloc(sizeof(struct node));
    return newNode;
}

//sona eleman ekleme fonksiyonu parametre olarak eklemek istediğimiz sayıyı alıyor.
void addLast(int x)
{
    struct node* element = createNode();
    //düğümün data değerine x'i atadık, next değerine ise NULL verdik, çünkü sona ekleyeceğiz
    element->data = x;
    element->next = NULL;
    //Eğer başlangıç değeri NULL ise hiç düğüm yok demektir, ilk düğümü oluşturuyoruz
    if(start == NULL)
    {
        start = element;
    }
    else
    {
        //Burada size bahsettiğim Traverse işlemini gerçekleştirdik.
        temp = start;
        while(temp->next != NULL)
        {
            temp = temp->next;
        }
        //Esas sona eleman ekleme işlemi burada yapılıyor :)
        temp->next = element;
    }

}


Bağlı Liste Sonuna Eleman Ekleme Video Anlatımı

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir