Dalam dunia pemrograman, struktur data merupakan aspek penting yang memungkinkan kita untuk menyimpan, mengelola, dan mengakses data secara efisien. Salah satu struktur data yang umum digunakan adalah linked list. Dalam artikel ini, kita akan menjelajahi konsep linked list dan bagaimana mengimplementasikannya menggunakan bahasa pemrograman Python.
Linked list adalah struktur data linier yang terdiri dari serangkaian simpul yang saling terhubung. Setiap simpul terdiri dari dua bagian utama: data dan pointer. Data adalah nilai atau informasi yang ingin kita simpan, sedangkan pointer adalah tautan ke simpul berikutnya dalam linked list.
1 2 3 4 5 6 |
Simpul 1 Simpul 2 Simpul 3 Simpul 4 +------+ +------+ +------+ +------+ | Data | | Data | | Data | | Data | +------+ +------+ +------+ +------+ | Next |------>| Next |------>| Next |------>| None | +------+ +------+ +------+ +------+ |
Dalam gambar di atas, setiap kotak mewakili simpul dalam linked list. Masing-masing simpul memiliki dua bagian: data (nilai atau informasi yang ingin disimpan) dan tautan (pointer) ke simpul berikutnya.
Simpul pertama (head) adalah titik awal dari linked list. Itu menunjuk ke simpul kedua melalui tautan Next
. Simpul kedua, pada gilirannya, menunjuk ke simpul ketiga melalui tautan Next
, dan seterusnya. Simpul terakhir dalam linked list menunjuk ke None
, menandakan akhir dari linked list.
Dalam linked list, kita dapat dengan mudah menambahkan atau menghapus simpul dengan mengatur tautan Next
yang sesuai. Ini memungkinkan kita untuk mengakses dan mengelola data dengan efisien dalam urutan yang dinamis.
Implementasi dasar linked list dalam Python melibatkan dua kelas: kelas Node dan kelas LinkedList. Pertama, mari kita lihat bagaimana mengimplementasikan kelas Node:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): self.head = None def is_empty(self): return self.head is None def add_node(self, data): new_node = Node(data) if self.is_empty(): self.head = new_node else: current = self.head while current.next: current = current.next current.next = new_node def display(self): if self.is_empty(): print("Linked list is empty.") else: current = self.head while current: print(current.data, end=" ") current = current.next print() def delete_node(self, data): if self.is_empty(): print("Linked list is empty. Deletion failed.") return if self.head.data == data: self.head = self.head.next print(f"Node with data {data} is deleted.") return current = self.head prev = None while current and current.data != data: prev = current current = current.next if current is None: print(f"Node with data {data} not found.") return prev.next = current.next print(f"Node with data {data} is deleted.") # Contoh penggunaan linked list my_list = LinkedList() # Menambahkan simpul ke linked list my_list.add_node(10) my_list.add_node(20) my_list.add_node(30) # Menampilkan isi linked list print("Isi Linked List:") my_list.display() # Menghapus simpul dari linked list my_list.delete_node(20) # Menampilkan isi linked list setelah penghapusan print("Isi Linked List setelah penghapusan:") my_list.display() |
1 2 3 4 |
class Node: def __init__(self, data): self.data = data self.next = None |
Dalam kelas Node, kita memiliki metode init() yang akan dipanggil saat membuat objek Node baru. Metode ini menginisialisasi atribut data dengan nilai yang diberikan dan mengatur atribut next menjadi None. Atribut next akan digunakan untuk menunjukkan tautan ke simpul berikutnya.
Selanjutnya, mari kita lihat bagaimana mengimplementasikan kelas LinkedList:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
class LinkedList: def __init__(self): self.head = None def add_node(self, data): new_node = Node(data) if self.head is None: self.head = new_node else: current = self.head while current.next: current = current.next current.next = new_node def display(self): current = self.head while current: print(current.data, end=" ") current = current.next |
Dalam kelas LinkedList, kita memiliki metode init() yang menginisialisasi atribut head menjadi None saat linked list kosong. Metode add_node() digunakan untuk menambahkan simpul baru ke linked list. Jika linked list masih kosong, simpul baru akan menjadi kepala (head). Jika tidak, kita akan bergerak melalui linked list menggunakan pointer next hingga menemukan simpul terakhir, dan kemudian menautkan simpul baru ke simpul terakhir tersebut.
Metode display() digunakan untuk mencetak isi linked list. Kita mulai dari head dan terus mengikuti tautan next hingga mencapai None, sambil mencetak nilai data pada setiap simpul.
Setelah kita mengimplementasikan kelas Node dan kelas LinkedList, kita dapat menggunakan linked list untuk menyimpan dan mengelola data. Contoh penggunaan linked list sebagai berikut:
1 2 3 4 5 6 7 8 9 10 11 |
# Membuat objek LinkedList my_list = LinkedList() # Menambahkan simpul ke linked list my_list.add_node(10) my_list.add_node(20) my_list.add_node(30) # Menampilkan isi linked list print("Isi Linked List:") my_list.display() |
Output yang dihasilkan adalah:
1 2 |
Isi Linked List: 10 20 30 |
Demo https://replit.com/@Ilham-TegarTega/linked-list-python?v=1#main.py
Dalam contoh di atas, kita membuat objek LinkedList baru dan menambahkan beberapa simpul ke dalamnya. Kemudian, kita mencetak isi linked list menggunakan metode display().
Dengan pemahaman tentang konsep linked list dan implementasinya menggunakan Python, Anda dapat menggunakannya untuk memecahkan masalah yang melibatkan struktur data linier. Linked list adalah alat yang kuat untuk memanipulasi dan mengatur data dengan efisien.
Selamat mencoba dan semoga artikel ini bermanfaat dalam memahami tugas struktur data linked list dengan Python!
thank thanks for article bro
great article thank for sharing streaming anime sub indo