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.
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.
Berikut adalah representasi visual sederhana dari sebuah Linked List:
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
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
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
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.