Java‘da Bağlantılı Liste Veri Yapısını Nasıl Oluşturursunuz

Element koleksiyonunu etkili bir şekilde yöneten bir veri yapısı oluşturmak programlamada zorlayıcı olabilir. En yaygın kullanılan yapılardan biri Bağlantılı Listedir. Bu blog yazısında, Java standart kütüphanesinde zaten mevcut bir sınıf olmasına rağmen, Java‘da Bağlantılı Liste oluşturma sürecini sizlere adım adım göstereceğiz.

Problemi Anlamak

Veri yapılarını düşündüğünüzde, muhtemelen dizilere odaklanıyorsunuzdur, ancak bazen bu yapılar yetersiz kalabilir. İşte burada bağlantılı listeler devreye giriyor. Bağlantılı Liste, elemanları dizi boyutunu değiştirmeye gerek kalmadan verimli bir şekilde ekleyip silmenizi sağlar. Bu yapı, her bir düğümün veri ve bir sonraki düğümün referansını içerdiği bir düğüm dizisinden oluşur.

Yerleşik Seçenek

Java, java.util paketi içinde yerleşik bir LinkedList sınıfı sunar; bu pek çok durumda pratik ve uygundur. Ancak kendi uygulamanızı oluşturabilmek, anlayışınızı derinleştirip veri yapısının davranışı üzerinde daha fazla kontrol sahibi olmanızı sağlayabilir.

Kendi Bağlantılı Listenizi Oluşturma

Aşağıda, sıfırdan basit bir Bağlantılı Liste oluşturmayı keşfedeceğiz. Bu eğitimde, düğüm ekleyip silerek temel işlevselliği sağlayan tek yönlü bir bağlantılı listeye odaklanacağız.

Öncelikle, listedeki her bir elementi temsil etmek için bir Link sınıfı oluşturmalıyız. İşte göründüğü şekilde kodu:

class Link {
    public int data1;
    public double data2;
    public Link nextLink;

    // Link yapıcı
    public Link(int d1, double d2) {
        data1 = d1;
        data2 = d2;
    }

    // Link verisini yazdır
    public void printLink() {
        System.out.print("{" + data1 + ", " + data2 + "} ");
    }
}

Sonra, tüm listeyi temsil edecek bir sınıfa ihtiyacımız var:

class LinkList {
    private Link first;

    // LinkList yapıcı
    public LinkList() {
        first = null;
    }

    // Liste boşsa true döner
    public boolean isEmpty() {
        return first == null;
    }

    // Liste başına yeni bir Link ekler
    public void insert(int d1, double d2) {
        Link link = new Link(d1, d2);
        link.nextLink = first;
        first = link;
    }

    // Listenin önündeki linki siler
    public Link delete() {
        Link temp = first;
        if (first == null) {
            return null; // veya Exception fırlat
        }
        first = first.nextLink;
        return temp;
    }

    // Listede tüm linkleri yazdırır
    public void printList() {
        Link currentLink = first;
        System.out.print("Liste: ");
        while (currentLink != null) {
            currentLink.printLink();
            currentLink = currentLink.nextLink;
        }
        System.out.println("");
    }
}

Adım 3: LinkList’i Test Etme

Son olarak, Bağlantılı Listemizi test etmek için bir ana metod uygulayalım:

class LinkListTest {
    public static void main(String[] args) {
        LinkList list = new LinkList();

        // Bazı elemanları ekleyin
        list.insert(1, 1.01);
        list.insert(2, 2.02);
        list.insert(3, 3.03);
        list.insert(4, 4.04);
        list.insert(5, 5.05);

        // Listeyi yazdır
        list.printList();

        // Elemanları sil
        while (!list.isEmpty()) {
            Link deletedLink = list.delete();
            System.out.print("silindi: ");
            deletedLink.printLink();
            System.out.println("");
        }
        list.printList();
    }
}

Sonuç

Bu blog yazısında, Java‘da özelleştirilmiş bir Bağlantılı Liste oluşturmayı, düğüm ekleme, silme ve yazdırma için temel yöntemleri içerecek şekilde ele aldık. Java’nın standart kütüphanesindeki yerel LinkedList sınıfı birçok uygulama için yeterli olabilir, ancak kendi uygulamanızı oluşturmak, programlama becerilerinizi geliştiren ödüllendirici bir deneyim olacaktır.

İleri İyileştirmeler

Bu temel uygulamayı öğrenip geliştirdikten sonra, aşağıdakileri eklemeyi düşünün:

  • Çift bağlı liste: Her düğümün hem bir sonraki hem de önceki düğümlere referansları olmalıdır.
  • Orta/Uç Ekle/Sil: Farklı pozisyonlardan düğüm ekleme veya kaldırma yöntemleri.
  • Get ve Sırala Yöntemleri: Belirli elemanları almak veya bağlantılı listeyi sıralamak için fonksiyonlar.

Bu iyileştirmelerle tanışmak, yeteneklerinizi bir üst seviyeye taşıyabilir. Mutlu kodlamalar!