Cara Membuat Struktur Data Linked List di Java

Membuat struktur data yang secara efektif mengelola koleksi elemen dapat menjadi tantangan dalam pemrograman. Salah satu struktur yang paling umum digunakan adalah Linked List. Dalam tulisan blog ini, kami akan membimbing Anda melalui proses membuat Linked List di Java, meskipun sudah ada kelas bawaan yang tersedia di pustaka standar Java.

Memahami Permasalahan

Ketika Anda memikirkan tentang struktur data, Anda mungkin berpikir tentang array, tetapi terkadang mereka tidak memadai. Di sinilah linked list berperan. Linked List memungkinkan Anda untuk dengan efisien menyisipkan dan menghapus elemen tanpa perlu mengubah ukuran sebuah array. Ini terdiri dari urutan node di mana setiap node berisi data dan referensi ke node berikutnya.

Opsi Bawaan

Java menyediakan kelas LinkedList bawaan dalam paket java.util, yang convenient dan cocok untuk banyak situasi. Namun, kemampuan untuk membuat implementasi Anda sendiri dapat memperdalam pemahaman Anda dan memberi Anda lebih banyak kontrol terhadap perilaku struktur data.

Membuat Linked List Sendiri

Di bawah ini, kita akan menjelajahi cara membangun Linked List sederhana kita dari awal. Untuk tutorial ini, kita akan fokus pada singly linked list yang memungkinkan penyisipan dan penghapusan node dari awal.

Pertama, kita perlu membuat kelas Link untuk merepresentasikan setiap elemen dalam daftar. Inilah tampilannya dalam kode:

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

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

    // Mencetak data Link
    public void printLink() {
        System.out.print("{" + data1 + ", " + data2 + "} ");
    }
}

Selanjutnya, kita perlu kelas untuk seluruh daftar itu sendiri:

class LinkList {
    private Link first;

    // Konstruktor LinkList
    public LinkList() {
        first = null;
    }

    // Mengembalikan true jika daftar kosong
    public boolean isEmpty() {
        return first == null;
    }

    // Menyisipkan Link baru di awal daftar
    public void insert(int d1, double d2) {
        Link link = new Link(d1, d2);
        link.nextLink = first;
        first = link;
    }

    // Menghapus link di depan daftar
    public Link delete() {
        Link temp = first;
        if (first == null) {
            return null; // atau throw Exception
        }
        first = first.nextLink;
        return temp;
    }

    // Mencetak semua link dalam daftar
    public void printList() {
        Link currentLink = first;
        System.out.print("Daftar: ");
        while (currentLink != null) {
            currentLink.printLink();
            currentLink = currentLink.nextLink;
        }
        System.out.println("");
    }
}

Akhirnya, mari kita terapkan metode utama untuk menguji Linked List kita:

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

        // Menyisipkan beberapa elemen
        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);

        // Mencetak daftar
        list.printList();

        // Menghapus elemen
        while (!list.isEmpty()) {
            Link deletedLink = list.delete();
            System.out.print("dihapus: ");
            deletedLink.printLink();
            System.out.println("");
        }
        list.printList();
    }
}

Kesimpulan

Dalam tulisan blog ini, kami menjelajahi cara membuat Linked List kustom di Java, lengkap dengan metode penting untuk menyisipkan, menghapus, dan mencetak node. Meskipun kelas LinkedList bawaan di pustaka standar Java mungkin sudah cukup untuk banyak aplikasi, menerapkan versi Anda sendiri bisa menjadi pengalaman yang bermanfaat yang meningkatkan keterampilan pemrograman Anda.

Peningkatan Selanjutnya

Setelah menguasai implementasi dasar ini, pertimbangkan untuk menambahkan:

  • Double-linked List: Setiap node harus memiliki referensi ke node berikutnya dan sebelumnya.
  • Insert/Delete Tengah/Akhir: Metode untuk menambah atau menghapus node dari berbagai posisi.
  • Metode Ambil dan Urut: Fungsi untuk mengambil elemen tertentu atau mengurutkan linked list.

Menjadi akrab dengan peningkatan ini dapat membawa keterampilan Anda ke tingkat berikutnya. Selamat coding!