Linked list, Türkçe adıyla bağlı liste, bir değerin yanında kendinden sonraki veya önceki değerleri gösteren referans değerlerinin yer aldığı ver yapısına verilen isimdir. Yığın (Stack), Kuyruk (Queue) gibi soyut veri yapılarını implement etmek için kullanılır.

Bağlı liste yapıları en basit tabiriyle veriyi yönetme ve barındırma biçiminiz olabilir. Gerçek uygulamalarda sıklıkla kullanılan Yığın ve Kuyruk kavramlarını uygulama içerisinde yazarken bağlı listeden yararlanabiliriz. Bağlı listenin birçok çeşidi bulunmaktadır. Bunlar: Tek yönlü bağlı liste, çift yönlü bağlı liste, dairesel bağlı liste ve çift yönlü dairesel listedir.

Tek yönlü linked list

Tek Yönlü Linked List

Adından da anlaşılacağı üzere tek yönlü bağlı listede yalnızca bir head olur ve bu head üzerinden tüm yapı aranır. Geriye dönüş olamaz. Bu yüzden referans olarak her veri yalnızca kendisinden bir sonraki verinin adresini tutar. Head adresi kaybedildiğinde linked list yapısına erişim mümkün değildir.

Çift yönlü linked list

Çift Yönlü Linked List

Çift yönlü bağlı listede veri hem next hem de back isimli iki pointer bulundurur. Bu işaretçiler kendinden bir sonraki veya önceki veri yapısını gösterir. Linked list üzerinde head kaybedilse bile bir veri parçasını kullanarak head bulunabilir.

Dairesel linked list

Dairesel Linked List

Dairesel bağlı listede her veri tıpkı tek yönlü bağlı liste gibi davranır. Kendinden sonraki verileri gösteren bu yapıda son veri null değeri yerine head işaretçisini gösterir. Head kaybedilse bile bir veri parçasından tekrar head bulunabilir veya liste üzerinde iterasyon gerçekleştirilebilir.

Çift yönlü dairesel bağlı liste

Çift Yönlü Dairesel Linked List

Çift yönlü dairesel bağlı liste hem çift yönlü bağlı liste hem de dairesel bağlı liste gibi çalışır. Head düğümümüz liste sonundaki elemanı gösterirken, listenin sonundaki eleman da head işaretçisini gösterir. Aynı zamanda da liste içerisindeki elemanlar da birbirlerini çift yönlü bir şekilde gösterir ve her türlü iterasyonu mümkün kılar. Head kaybedilse bile bulunabilir.



Sonuç

Linked listler verileri hafızada istediğimiz biçimde tutmamıza olanak sağlarken verinin düzenli ve programa uygun bir şekilde depolanmasını sağlar. Her uygulama için olmasa da bazı durumlar için uygundur. Örneğin tarayıcılarda sekmelerde ileri-geri yaparken veri yapılarının bir gerçek hayat uygulamasını görebiliriz. Çift yönlü bağlı listede ekle, sil, listele gibi işlemleri yaptığım şu yazıma göz atabilirsiniz. C diliyle linked list nasıl oluşturulur ve nasıl veri eklenir merak ediyorsanız da sizi bu yazıma beklerim.


Okuyucuya Not

Merhaba okuyucu! Blogum son zamanlarda yüksek trafik almaya başladı ve bu durumdan memnunum fakat aynı zamanda siz ziyaretçileri tatmin edememekten endişeliyim. 🙂 Eğer yazılarım ile ilgili bir tavsiyeniz olursa mail adresimden bana ulaşabilir veya Twitter üzerinden direct message gönderebilirsiniz. Github’ta örnek olarak yaptığım projelere göz atmak isterseniz de bu linki kullanabilirsiniz. Umarım bu ziyaretinizle size bir şeyler katabilmişimdir.

Sağlıcakla kalın!

Tags: