Contoh Program Linked List Python: Implementasi Dasar

Linked List (Daftar Berantai) adalah salah satu struktur data linier yang paling mendasar dalam ilmu komputer. Berbeda dengan Array yang menyimpan elemen secara berdekatan di memori, Linked List menyimpan elemen-elemennya yang disebut 'Node' secara tersebar. Setiap Node memiliki dua bagian utama: data (nilai) dan pointer (referensi) ke Node berikutnya dalam urutan.

Implementasi Linked List di Python sangat menarik karena bahasa ini tidak memerlukan manajemen memori manual yang eksplisit seperti C++. Kita hanya perlu mendefinisikan struktur Node dan kemudian mengelola tautan antar objek Node tersebut.

Mengapa Menggunakan Linked List?

Kelebihan utama Linked List terletak pada operasi penyisipan (insertion) dan penghapusan (deletion) elemen di awal atau di tengah struktur data. Operasi ini sangat efisien (O(1) jika posisi diketahui atau O(n) untuk pencarian awal) dibandingkan dengan Array yang mungkin memerlukan pergeseran semua elemen setelahnya.

Visualisasi Struktur Data

Berikut adalah representasi visual sederhana dari sebuah Linked List:

Visualisasi Node dalam Linked List Data 1 Data 2 Data 3 NULL

Struktur Node di Python

Langkah pertama adalah mendefinisikan kelas untuk Node. Setiap instance dari kelas ini akan menyimpan data dan referensi ke Node selanjutnya.


class Node:
    def __init__(self, data):
        self.data = data  # Menyimpan data
        self.next = None  # Pointer ke node berikutnya, awalnya None

Implementasi Kelas Linked List

Kelas utama Linked List akan bertanggung jawab untuk mengelola head (simpul pertama) dan menyediakan metode untuk manipulasi daftar, seperti penambahan di awal (prepend) dan pencetakan daftar.


class LinkedList:
    def __init__(self):
        self.head = None

    # Metode untuk menambahkan elemen di awal list
    def prepend(self, data):
        new_node = Node(data)
        new_node.next = self.head
        self.head = new_node

    # Metode untuk mencetak seluruh list
    def display(self):
        elements = []
        current = self.head
        while current:
            elements.append(str(current.data))
            current = current.next
        
        print(" -> ".join(elements) + " -> NULL")

    # Metode untuk menambahkan elemen di akhir list (Append)
    def append(self, data):
        new_node = Node(data)
        if not self.head:
            self.head = new_node
            return
        
        last = self.head
        while last.next:
            last = last.next
        last.next = new_node

Penggunaan Program Sederhana

Setelah mendefinisikan kelas, kita dapat membuat instance dan mulai menambahkan serta menampilkan elemen. Dalam contoh ini, kita akan menambahkan beberapa data ke Linked List kita.


# Inisialisasi Linked List
my_list = LinkedList()

# Menambahkan elemen di awal
my_list.prepend(10) # List: 10 -> NULL
my_list.prepend(5)  # List: 5 -> 10 -> NULL

# Menambahkan elemen di akhir
my_list.append(20)  # List: 5 -> 10 -> 20 -> NULL
my_list.prepend(1)  # List: 1 -> 5 -> 10 -> 20 -> NULL

print("Isi Linked List:")
my_list.display()

# Output yang diharapkan: 1 -> 5 -> 10 -> 20 -> NULL

Kesimpulan

Struktur Linked List adalah fondasi penting untuk memahami struktur data yang lebih kompleks seperti Queue, Stack, dan Hash Table. Implementasi dasar Python di atas menunjukkan betapa elegan struktur ini dapat direpresentasikan hanya dengan konsep kelas dan referensi objek. Meskipun Python menyediakan list bawaan yang sangat cepat, memahami cara kerja Linked List memberikan wawasan mendalam tentang efisiensi memori dan algoritma manipulasi data.

Untuk pengembangan lebih lanjut, Anda bisa menambahkan metode seperti penghapusan elemen (delete), pencarian elemen (search), atau bahkan mengembangkan versi Doubly Linked List di mana setiap Node memiliki pointer ke Node sebelumnya juga.