Kotlin Linked Lists (Bağlı Listeler)

Merhaba, Kotlin ile Veri Yapıları ve Algoritma derslerimize devam ediyoruz. Buraya kadar Kotlin’de Array yani diziler ile nasıl çalışacağımızı gördük. Diziler hakkında ayrıntılı bilgi almak isteyenler şu yazıları inceleyebilir:

Bu yazı ile beraber Linked Lists yani Bağlı Listelere giriş yapacağız. Array yapısı verilerle çalışmayı ve gruplamayı mümkün kılmakla beraber yazılımda meydana gelecek olan tüm problemleri çözmek için yeterli değildir. Çoğu durumda, çalışacağımız veri kümesinin sayısını bilemeyiz. Ayrıca bir diziden eleman silmek veya bir dizinin ilk ve son elemanları arasında herhangi bir yere yeni bir eleman eklemenin ortaya çıkardığı maliyetler göz önüne alındığında sadece diziler ile çalışmak esnek olmamaktadır.

Bu gibi problemleri aşmak için farklı veri yapıları ile çalışmak gerekiyor. Örneğin dizilerin bir sınıf gibi davranarak gerektiğinde büyüyüp küçülmesini sağlayan özel veri yapıları ile bu ve benzer problemlerin rahatça aşılması sağlanabilir. Diziler birçok veriyle rahat bir şekilde çalışmak için geliştirilmiştir. Ancak dizilerin çözüm olmadığı hatta gelişime zarar verdiği bazı anlar vardır. Bu gibi durumlarda yeni veri yapılarına ihtiyaç kaçınılmaz olmuştur. Özetle birçok veriyle çalışmak dizileri, dizilerin esnek olmayışı da yeni veri yapıları oluşturmayı zorunlu kılmıştır.

Daha önce anlattığımız ArrayList sınıfı hem dizi hem de esnek bir yapıya sahip olan veri yapısına örnektir. Özellikle veri kümesinin boyutu ArrayList ile çözülen bir problemdir. Ancak bu artısıyla beraber veri ekleme performansı oldukça düşüktür. ArrayList yapısındaki bir dizi dolu ise ve bu diziye veri eklemek gerekiyorsa daha büyük boyutlu bir dizi oluşturup tüm verileri buraya kopyalamak ve yeni elemanı eklemek gerekiyor. Bu durum haliyle zaman alıyor eğer boyut dahada büyürse daha fazla zamanı göze almak kaçınılmaz olmaktadır. ArrayList ile ortaya çıkan bu ekleme sorunu Linked List yani bağlı listeleri oluşturmayı zorunlu kılmıştır.

Bu yazıyla birlikte Linked List yapısını, Singly Linked List (Tek Yönlü Bağlı Liste), Doubly Linked List (Çift Yönlü Bağlı Liste) ve Circular Linked List (Dairesel Bağlı Liste) yapılarını anlamaya çalışacağız. Ayrıca Kotlin ile bu işlemleri yapan kodları birlikte yazacağız.

Linked List veri yapısında, veriler lineer yani doğrusal olarak birbiriyle bağlı olacak şekilde tutulur. Veriler node yani düğüm denilen yapılarda saklanır. Her bir düğüm veriyle birlikte bir sonraki düğümün referansını yani adresini tutmakla sorumludur. Düğümler çok çeşitli verilerden meydana gelebilir. Veri yapıları dersinde yaygın olarak listenin ilk elemanı head son elemanı ise last olarak isimlendirilir. Son eleman yani last düğümü, bir sonraki düğüm olmadığı için null referansına sahiptir. Ayrıca bu veri yapısındaki tüm düğümler aynı bellek konumunda tutulmak zorunda değildir. Bunun en büyük artısı dizilerde olduğu gibi ihtiyaç olsun olmasın bellekte gereksiz alan tahsisini engellemesidir. Bağlı listeler esnek olduğu için RAM’in daha etkin kullanımı sağlanmış olur.

Bu makalede Linked Lists veri yapısına giriş yaptık. Sonraki makalede Singly Linked List yani Tek Yönlü Bağlı Liste yapısını ele alacağız.

**Bana en büyük desteğiniz yazılarıma yorum yapmanız ve paylaşmanızdır.