Latihan: Melayani Pasien Kritis
Mengimplementasikan penghapusan nilai tertinggi (Root) pada Max Heap dan menyusun ulang struktur pohon menggunakan algoritma Heapify.
Mengimplementasikan penghapusan nilai tertinggi (Root) pada Max Heap dan menyusun ulang struktur pohon menggunakan algoritma Heapify.
Dokter di UGD sudah siap melayani pasien. Sesuai aturan Antrean Prioritas, pasien yang dipanggil pertama adalah pasien dengan prioritas tertinggi. Di dalam MaxHeap, pasien ini selalu duduk di puncak (Root) atau indeks ke-0.
Langkah penghapusan Root dari pohon Heap statis adalah:
Visualisasi proses pelayanan pasien:
Kondisi Awal (Pasien 12 siap dipanggil):
Setelah Dilayani & Heapify (Pasien 10 naik takhta):
Lengkapi dua fungsi utama:
Heapify (Turun Takhta): Fungsi rekursif untuk memperbaiki susunan pohon. Bandingkan elemen puncak dengan anaknya, lalu tukar dengan anak yang paling besar nilainya jika perlu. Teruskan proses ini ke bawah sampai aturan MaxHeap terpenuhi.DeleteRoot: Selamatkan nilai puncak, ganti dengan elemen terakhir, kurangi ukuran array, lalu panggil Heapify dari puncak pohon.Program akan mencetak kondisi larik sebelum pasien ditangani, mencetak angka prioritas pasien yang dilayani, dan melacak kondisi larik setelah puncak baru dipulihkan (Heapify).
Berdasarkan skenario di main, output akan menunjukkan pasien prioritas 12 dipanggil, dan pohon diatur ulang sehingga 10 naik ke puncak.
Output:
=== STATUS AWAL ANTREAN UGD ===
|--[12]
|--[10]
|--[4]
|--[8]
|--[7]
[Aksi] Memanggil pasien paling kritis...
Pasien 12 dilayani.
Status Antrean (Setelah Heapify):
|--[10]
|--[8]
|--[4]
|--[7]Hint: Urutan Penghapusan
Saat menulis fungsiDeleteRoot, pastikan Anda mengurangi nilaiH->sizeterlebih dahulu sebelum menjalankanHeapify. Ini penting karena fungsiHeapifymembutuhkan informasi jumlah elemen terbaru agar tidak membandingkan data dengan elemen yang seharusnya sudah terhapus.