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

Postingan populer dari blog ini

Tugas Menyelesaikan Game Flash Logika

Membuat Kalkulator Sederhana dengan Python

"DO DARI KAMPUS - ASELOLE BANYAK CEWEK - CIPTAKAN PRODUK - DIBENCI BANYAK ORANG - SUKSES❗"