Home / Veri Yapıları / Bağlı Liste Nedir? (Linked List Nedir?)
https://www.algoritmauzmani.com/veri-yapilari/bagli-liste-nedir-linked-list-nedir/

Bağlı Liste Nedir? (Linked List Nedir?)

Linked List adıyla tabir edeceğimiz bağlı liste yapısı veriyi RAM’de tutmak üzerine tasarlanmış özel bir veri saklama yöntemidir. Normalde bizler verileri değişkenlerde ya da dizilerde saklamaktayız. Ancak bunlara alternatif olarak verileri bağlı liste yapısı içerisinde de tutmamız mümkündür. Bu yazıda bağlı liste nedir sorusuna cevap vermeye çalışacağız.in

Bağlı Listeler temelde düğüm (Node) adı verdiğimiz yapılardan oluşur. Bu düğümlerin temelde tuttukları iki şey vardır. Birincisi tutmak istediğimiz veriler. (tek veri tutmak zorunda değiliz, istediğimiz kadar bilgi tutarız) Diğeri ise diğer düğümün adres bilgisidir. Diğer düğümün adres bilgisinin tutulması buradaki kritik noktadır. Zira bu sayede biz RAM’de tuttuğumuz tüm bilgileri adeta bir dizide tutmuşcasına saklama imkanına sahip oluruz. Aşağıdaki görselde, örnek bir bağlı liste yapısını görebilirsiniz.

Yukarıdaki görseli incelediğimizde bir düğüm içerisinde 2 ayrı parça görüyoruz. Bir tanesi verilerin saklandığı bölüm, diğeri ise sonraki düğümü işaret eden adres bilgisi. Biz bunu C ile kodlarken pointer ile gerçekleştireceğiz. Kafanız karışmasın, pointer adres bilgisi saklayan değişkendir. Nasıl int sayı değeri saklıyorsa pointerlar da adres bilgisi saklamaktadır. bu konuya önümüzdeki yazıda giriş yapacağız. Temel mevzu, her düğümün, kendisinden sonra gelen düğümü işaret etmesidir. Son düğüm ise NULL’u yani boşluğu işaret eder. Bunun tek istisnası Dairesel Bağlı Listedir. Bunu da zamanı gelince anlatırız.

Bağlı Liste (Linked List) ve Dizi (Array) Karşılaştırması

Bağlı liste kavramı Dizi veri yapısının alternatifiymiş gibi düşünülebilir. Bu illa ki bu şekilde olmak zorunda değil, ancak böyleymiş gibi düşünürsek de çok hata etmiş olmayız. Çünkü C ve C++ gibi dillerde Array yerine Linked List kullanmamız gayet mümkündür.

Peki Neden Linked Listi yani bağlı listeleri dizilere tercih edebiliriz? Bu konudaki en spesifik bilgi eleman ekleme ve silme işleminin kolay olmasıdır. Yani biz bağlı listelere çok rahat eleman ekler, eleman çıkarabiliriz.

Bunu şöyle düşünün, 100 elemanlık bir dizimiz var ve biz 50. elemanı silmek isteyelim. bu durumda geriye kalan 49 elemanı birer indis kaydırmamız gerekir. Yani 49 tane işlem gerçekleştiririz. Elimizde milyonlarca veri olduğunu düşünürsek bu korkunç bir şey olurdu. Bağlı Liste işlemlerinde ise böyle bir durum yaşanmaz, istediğimiz elemanı rahatlıkla silebiliriz. Ekleme işlemi için de aynı şey geçerlidir.

Bir diğer avantaj da dinamik olmasıdır. Tabii modern yazılım dillerinde bu geçerli değil. Mesela C’de dizi tanımlarken boyutunu önceden belirlemeliyiz. Boyut aşımı gerçekleşmez. Bağlı listede ise boyut sınırı yoktur. (Tabii ki Ram’in doğal sınırları vardır) Biz C ve C++ gibi dillerde boyuta bağımlı kalmadan bağlı liste ile işlem yapabiliriz.

Bağlı Listelerin Dezavantajları

Elbette bağlı listelerin dizilere karşı bir takım dezavantajları da bulunur. Bunun en başında fazladan alan kullanımı gelmektedir. Çünkü bağlı listelerde mevcut bilgilere ek olarak bir de adres bilgisi tutulmaktadır. Bu da daha fazla alan kullanımı anlamına gelmektedir.

Diğer bir dezavantaj ise rastgele erişimin maliyetli olmasıdır. Random erişim ile kast edilen şey elimizdeki herhangi bir veriye erişmek için geçen zaman gibi düşünebilirsiniz. Bir dizide 10. indise erişmek istediğimiz zaman direkt olarak erişiriz. Ancak Linked List’de 10. indise erişmek için aradaki tüm düğümleri dolaşmamız gerekmektedir. Bu da maliyeti artırmaktadır. Elbette bu tip sorunları çözmek için geliştirilmiş pek çok yöntem bulunmaktadır. Ancak en yalın halleriyle incelediğimizde bağlı liste yapısında Random erişimin zor olduğunu görmek hiç de zor değildir.

Bağlı Liste (Linked List Çeşitleri)

Bağlı listeler kendi içlerinde 3 çeşide ayrılırlar.

  1. Tek Yönlü Bağlı Listeler (Singly Linked List)
  2. Çift Yönlü Bağlı Listeler (Doubly Linked List)
  3. Dairesel Bağlı Listeler (Circular Linked List)

Biz yazılarımızda bu 3 bağlı liste türünü de inceleyeceğiz.

Bağlı Listelerde Yapılan İşlemler

Bağlı listeler üzerinde çeşitli operasyonlar gerçekleştireceğiz. Bu operasyonların nasıl yapıldığını sizlere adım adım kodlarıyla birlikte anlatacağız.

  • Eleman Ekleme İşlemleri
    • Başa Eleman Ekleme
    • Araya Eleman Ekleme
    • Sona Eleman Ekleme
  • Eleman Silme İşlemleri
    • Baştan Eleman Silme
    • Aradan Eleman Silme
    • Sondan Eleman Silme
  • Ters Çevirme İşlemleri

Bağlı Liste işlemleri temelde bu şekilde olacak. Biz bunlara ek olarak farklı bağlı liste oluşturma gibi işlemleri de sizlere anlatacağız. Bizleri takip etmeye devam edin.

One comment

  1. Böyle kıymetli veriler aktararak ne kadar topluma yardımcı olduğunuzu bir bilseler, çok teşekkürler.

Bir cevap yazın

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