Analogi Kehidupan Sehari-hari: Antrean Cuci Motor
1. Fondasi: Class Node
class Node:
def __init__(self, data):
self.data = data
self.next = None
*data: Tempat menyimpan nilai (seperti plat nomor motor).
*next: "Tangan" yang memegang node berikutnya. Awalnya bernilai None karena belum ada sambunganPenambahan
2.Elemen (tambah_antrean)
def tambah_antrean(self, data):
new_node = Node(data)
if not self.head: # Jika antrean kosong
self.head = new_node
return
last = self.head
while last.next: # Berjalan sampai ke gerbong terakhir
last = last.next
last.next = new_node # Sambungkan gerbong terakhir ke gerbong baru
*Logika: Program mengecek apakah sudah ada head (elemen pertama). Jika sudah ada, program akan "berjalan" dari depan sampai menemukan node yang next-nya kosong (ujung antrean), lalu menyambungkan motor baru di sana.
3.Penghapusan Elemen (hapus_antrean)
*def hapus_antrean(self):
if not self.head:
return
temp = self.head # Simpan sementara data yang akan dihapus
self.head = self.head.next # Geser 'head' ke orang kedua
Logika: Dalam antrean cuci motor, yang pertama datang adalah yang pertama selesai (FIFO - First In First Out). Untuk menghapusnya, kita cukup memindahkan penanda head ke node berikutnya. Node yang lama otomatis terputus dari sistem.
4.Pencarian Elemen (cari_motor)
while current:
if current.data == kunci:
return True # Ketemu!
current = current.next # Geser ke node selanjutnya
Logika: Kita mulai dari depan (head), lalu bertanya pada setiap node: "Apakah plat nomormu sama dengan yang dicari?". Jika tidak, kita pindah ke node selanjutnya menggunakan current.next.
5.Menampilkan Antrean (tampilkan_antrean)
Program ini hanya melakukan pengulangan (looping) dari head sampai ke node yang next-nya None, sambil mencetak setiap data yang dilewati dengan simbol -> sebagai visualisasi sambungan.
Kenapa Pakai while current?
Dalam Linked List, kita tidak bisa langsung mengakses data di tengah (seperti list[2] pada array). Kita wajib mulai dari depan dan menelusuri rantainya satu per satu. Itulah alasan mengapa banyak perintah while di dalam kode tersebut.

Komentar
Posting Komentar