Bağlı Listeler Sona Eleman Ekleme - (Linked List Sona Eleman Ekleme)

Tek yönlü bağlı listelerde sona eleman eklemek için gereken fonksiyonlar yazılmıştır. Main Fonksiyonuyla birlikte tüm kodlar en aşağıdadır. Kopyalayıp dilediğiniz gibi kullanabilirsiniz. Eğitim amaçlı olarak Algoritma Uzmanı tarafından hazırlanmıştır.

bağlı listeler sona eleman ekleme
Resim bulamadım konuya uygun :(

Bağlı Liste Sona Eleman Ekleme Kodu Nasıl Yazılır?

not(Kodların tümü (main fonksiyonuyla birlikte) aşağıdan okuyabilirsiniz.)
1. Adım: Linked List düğüm yapısı oluşturulur.

struct node
{
    int data; //düğüm içerisindeki değeri taşıyacak
    struct node *next; // sonraki düğümü gösteren pointer değeri
};

2. Adım: İşlemlerde kullanacağımız varsayılan düğümleri oluşturuyoruz.

struct node* start = NULL;  // başlangıç düğümü için özel start düğümü
struct node* temp = NULL;  //  Elimizdeki değeri tutmak için geçici olarak kullanacağımız düğüm
struct node* q = NULL;    //   Son düğümü bulmak için kullanacağımız düğüm

3. Adım: Kendisine parametre olarak gönderilen değeri linked list'e ekleyen fonksiyonu oluşturuyoruz.

void sonaEkle(int veri)
{
    temp = (struct node*)malloc(sizeof(struct node)); // temp düğümü için alan oluşturduk
    temp->data = veri; // Temp düğümüne fonksiyondan aldığımız data değişkenini atadık
    temp->next = NULL; // Temp Düğümü sonraki hiçbir düğümü işaret etmeyecek.

    if(start == NULL) //Eğer Start düğümü NULL ise
        start = temp; //start düğümüne temp düğümünü atıyoruz.
    else
    {
        // Burası tamamen algoritmauzmanı.com adresinde anlattığımız Linked List Traversal işlemi
        q = start;
        while(q->next!=NULL)
        {
            q = q->next;
        }
        q->next = temp; // Son düğümü buluyoruz, onun next pointerına başta oluşturduğumuz temp değerini atıyoruz. Çünkü bu sona atama işlemi.
    }

}

4. Adım: Linked List Elemanlarını Ekrana Yazdıran Fonksiyonu Yazıyoruz.

void yazdir()
{
    q = start;
    while(q->next!=NULL)
    {
        printf("==>%d", q->data);
        q = q->next;
    }
        printf("=>%d", temp->data); //while döngüsüyle elemanları bastırırken son elemanı basmaz, bu yüzden temp değerini ayrı bastırıyorum.
}


Linked List Sona Eleman Ekleme Hazır C Kodu


#include<stdio.h>

#include<stdlib.h>



// *************************************

// *************************************

// *************************************

// *******Algoritma Uzmanı**************

// *************************************

// *************************************

// *******www.algoritmauzmani.com*******

// *************************************

// *************************************

// *************************************





//dugum olusturuyoruz

struct node

{

    int data; //düğüm içerisindeki değeri taşıyacak

    struct node *next; // sonraki düğümü gösteren pointer değeri

};



struct node* start = NULL;  // başlangıç düğümü için özel start düğümü

struct node* temp = NULL;  //  Elimizdeki değeri tutmak için geçici olarak kullanacağımız düğüm

struct node* q = NULL;    //   Son düğümü bulmak için kullanacağımız düğüm





// Bu fonksiyon sayesinde sona düğüm ekliyoruz.

void sonaEkle(int veri)

{

    temp = (struct node*)malloc(sizeof(struct node)); // temp düğümü için alan oluşturduk

    temp->data = veri; // Temp düğümüne fonksiyondan aldığımız data değişkenini atadık

    temp->next = NULL; // Temp Düğümü sonraki hiçbir düğümü işaret etmeyecek.



    if(start == NULL) //Eğer Start düğümü NULL ise

        start = temp; //start düğümüne temp düğümünü atıyoruz.

    else

    {

        // Burası tamamen algoritmauzmanı.com adresinde anlattığımız Linked List Traversal işlemi

        q = start;

        while(q->next!=NULL)

        {

            q = q->next;

        }

        q->next = temp; // Son düğümü buluyoruz, onun next pointerına başta oluşturduğumuz temp değerini atıyoruz. Çünkü bu sona atama işlemi.

    }



}



//ekrana linked list elemanlarımızı yazdıran fonksiyon

void yazdir()

{

    q = start;

    while(q->next!=NULL)

    {

        printf("==>%d", q->data);

        q = q->next;

    }

        printf("=>%d", temp->data); //while döngüsüyle elemanları bastırırken son elemanı basmaz, bu yüzden temp değerini ayrı bastırıyorum.

}







int main()

{



    int i, adet, deger, deger1, deger2;

    printf("kac adet bagli liste elemani gireceksiniz?"); //Kullanıcıdan kaç adet değer gireceğini alıyoruz

    scanf("%d", &adet);



    for(i=0; i<adet; i++)

    {

        printf("\n %d. sayiyi girin .... ", i+1);

        scanf("%d", &deger);

        sonaEkle(deger);

    }

    printf("\n");

    yazdir();





    return 0;

}


Etiketler: ,