Vilogic
Materi Pembelajaran

Integrasi Struktur Data

Integrasi Struktur Data List, Queue, dan stack untuk Sistem Antrean TU

Kali ini, kita akan menggabungkan konsep list (untuk fitur edit, dan hapus), Queue (untuk antrean siswa), dan Stack (untuk fitur Undo) menggunakan bahasa Python.

Queue (Antrean)

"First-In, First-Out"

Digunakan untuk menampung siswa yang datang. Menggunakan append() untuk masuk dan pop(0) untuk melayani.

Stack (Riwayat/Undo)

"Last-In, First-Out"

Menyimpan data siswa yang selesai dilayani. Menggunakan pop() untuk mengambil tindakan terakhir saat melakukan pembatalan (Undo).

Implementasi Python

sistem-antrean.py
# =============================================================
# SISTEM ANTREAN TU
# =============================================================

# PERSIAPAN LIST (Tempat menyimpan data)
antrean = []
riwayat_undo = []

# FUNGSI MENGELOLA DATA
def tambah_data(data):
    antrean.append(data)
    print(f"[TAMBAH] {data} berhasil masuk antrean.")

def edit_data(nomor_urutan, data_baru):
    # Mengubah urutan manusia (1,2,3) ke urutan komputer (0,1,2)
    index = nomor_urutan - 1
    if 0 <= index < len(antrean):
        data_lama = antrean[index]
        antrean[index] = data_baru
        print(f"[EDIT] Data nomor {nomor_urutan} diganti: {data_lama} -> {data_baru}")
    else:
        print("[Gagal] Nomor urutan tidak ada!")

def hapus_data(nomor_urutan):
    index = nomor_urutan - 1
    if 0 <= index < len(antrean):
        data_dibuang = antrean.pop(index)
        print(f"[HAPUS] {data_dibuang} telah keluar dari antrean.")

def layani_pertama():
    if len(antrean) > 0:
        diproses = antrean.pop(0) # FIFO
        riwayat_undo.append(diproses)
        print(f"[PROSES] Melayani: {diproses}")
    else:
        print("[KOSONG] Antrean sudah habis.")

def batal_layanan():
    if len(riwayat_undo) > 0:
        data_balik = riwayat_undo.pop() # LIFO
        antrean.insert(0, data_balik)
        print(f"[UNDO] Pelayanan {data_balik} dibatalkan.")

# ======================================
# BAGIAN MENJALANKAN FUNGSI SISTEM
# ======================================
print(">>> MEMULAI SISTEM <<<")
# 1. Masukkan data
tambah_data("Budi - Legalisir")
tambah_data("Hani - Surat Magang")
cek_antrean()

# 2. Edit data (Contoh: Ganti Hani jadi Hani Putri)
# Format: edit_data(nomor_urutan, "data baru")
edit_data(2, "Hani Putri - Surat Magang")
cek_antrean()

# 3. Hapus data (Contoh: Hapus Hani Putri)
hapus_data(2)
cek_antrean()

# 4. Layani siswa pertama
layani_pertama()
cek_antrean()

# 5. Batalkan pelayanan
batal_layanan()
cek_antrean()
print(">>> SISTEM SELESAI <<<")

Memahami Cara Kerja

01

Inisialisasi Data

Dua list kosong disiapkan: antrian (Queue) untuk alur masuk siswa dan riwayat (Stack) untuk mencatat siapa yang baru saja selesai dilayani.

02

Operasi Dasar (CRUD)

Kita bisa menambah data (Push), mengedit nama berdasarkan nomor urut (Index), dan menghapus siswa dari tengah antrean jika mereka membatalkan kunjungan.

03

Logika Undo yang Unik

Fungsi undo_layanan memindahkan data paling atas di riwayat (Stack) kembali ke posisi index 0 di antrian (Queue) menggunakan insert(0).

Catatan: Penggunaan insert(0, siswa) adalah teknik khusus untuk menempatkan kembali elemen ke baris paling depan (prioritas pertama) setelah proses dibatalkan.
E-Book Materi

Untuk materi yang lebih detail silahkan buka atau unduh e-book materi ini