C Programlama Dili Tek Yönlü Bağlı Liste Ekleme
C Programlama Dili Tek Yönlü Bağlı Liste Ekleme
Bu konumuzda c programlama dili tek yönlü bağlı liste ekleme fonksiyonunu anlatacağız. Veri yapılarında bağlı listeler, diziler ile aynı görevi gören fakat dizilerden daha dinamik şekilde işleyen veri yapılarıdır. Eleman sayısı belli olmayan yapılarda bağlı liste kullanılır. Eklenen her yeni eleman ile birlikte bellekte yeni bir yer ayrılır. Bu elemanlar düğüm olarak adlandırılır. Bu düğümler pointer yardımı ile birbirine bağlanır ve herhangi bir veri kaybı yaşanmaz.
Şimdi aşağıda sizlere bağlı listeye eleman eklemeyi adım adım anlatacağım;
1 2 3 4 5 |
typedef struct list{ int sayi; struct list *sonraki; }liste; liste *ilk = NULL,*son = NULL, *yeni; |
- Yukarıda ilk olarak “liste” adında bir struct yapısı oluşturuyoruz.
- Bu yapının içerisinde bir adet integer veri tipinde sayi değişkeni ve listenin bir sonraki düğümünün adresini tutacak olan “liste” veri tipinde “sonraki” adında bir pointer değişken vardır.
- Bağlı listelerin en temel noktalarından birisi ilk elemanı asla kaybetmemektir.
- Bu nedenle “liste” türünde ilk elemanı tutması için “ilk” adında bir pointer değişken oluşturduk
- Ve “ilk” in içini kontrol etmemiz için NULL değerini atadık.
- Eklemede kolaylık sağlaması açısından son elemanı tutmak için de “son” adında başka bir değişken oluşturup yine NULL değeri ataması yaptık.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
void ekle(int veri){ yeni = (liste *) malloc(sizeof(liste)); yeni->sayi = veri; yeni->sonraki = NULL; if(ilk == NULL){ //İlk düğümde eleman olup olmadığını kontrol et. ilk = yeni; son = ilk; } else{ //İlk düğümde eleman varsa bu işlemleri yap. son->sonraki = yeni; son = son->sonraki; } } |
Şimdi ekleme işlemlerini adım adım açıklama yapalım;
- İlk olarak kullanıcı ekle fonsiyonuna eklemek istediği sayıyı gönderir.
- Fonksiyon içinde “liste” türünde “yeni” adında bir değişken tanımlanır ve bu değişkene malloc ile bellekte bir yer ayrılır.
- Kullanıcının gönderdiği sayı, “yeni” düğümünün “sayi” adındaki değişkenine atanır.
- Ve “yeni” düğümünün bir sonraki düğümün adresini tutan “sonraki” adlı değişkenine NULL değeri atanır.
- Sonrasında ilk düğümün boş olup olmadığı kontrol edilir.
- İlk düğüm boş ise “yeni” düğümü “ilk” düğüme, “ilk” adlı düğüm ise “son” a atanır. ( listede tek eleman olduğu için ilk ve son düğüm aynı düğümdür. )
- İlk düğüm boş değil ise “son” düğümün “sonraki” değişkenine “yeni” düğüm atanır.
- Ardından “son” un bir sonraki düğümünü tutan “son->sonraki” düğümü “son” adlı düğüme atanarak ekleme işlemi sona erer.
NOT : Eğer listeye sürekli eleman eklemek isterseniz ekle fonksiyonunu while(1) sonsuz döngüsü içerisinde çağırabilirsiniz. Ayrıca fonksiyon içerisine bir çıkış şartı belirterek istediğiniz sayıda eleman ekleyebilirsiniz.
Leave a reply
Lütfen yorum için giriş yap ve yakayıt ol Teşekkürler .