Soal text
Transkripsi dicocokkan dengan 2 halaman naskah asli.
Redaksi dirapikan untuk dibaca. Data, pilihan jawaban, dan subsoal mengikuti naskah; diagram dijelaskan dalam teks atau tabel.
Lompat ke soal
UAS Struktur Data, gasal 2025/2026. Senin, 15 Desember 2025. 10.00–11.40 WIB (100 menit). Buku hardcopy terbuka, no gadgets.
Tuliskan NIM dan nama pada setiap lembar jawab. Dilarang plagiasi, bekerja sama, saling pinjam, atau berkomunikasi. Jawab menggunakan pensil 2B dan notasi algoritmik/pseudocode, bila perlu disertai asumsi/gambar.
Studi kasus SIDONA
Sistem Donasi Bencana (SIDONA) mencatat Dermawan berdasarkan NIK, Nama Lengkap, Telepon, Tanggal donasi, besaran Uang (Rp), dan daftar Barang.
| No | NIK | Nama Lengkap | Telepon | Tanggal | Uang | Barang |
|---|---|---|---|---|---|---|
| 1 | 337411005 | Arif Bijaksana | 081234567890 | 10-12-2025 | 1.000.000 | — |
| 2 | 332112003 | Budiman Luhur | 081987654321 | 12-12-2025 | 0 | 120 kg beras |
| 3 | 337411005 | Arif Bijaksana | 081234567890 | 15-12-2025 | 500.000 | — |
| … | … | … | … | … | … | … |
Soal 1 — 30%
Buat definisi semua struktur data abstrak (ADT) yang relevan dan realisasi operator pengisian nilai setiap komponen untuk sebuah objek Dermawan pada SIDONA dengan representasi berkait.
Type Dermawan = …
… {tambahkan type-type lain yang relevan}
Type ListDermawan = …
Function createDermawan( … ) → Dermawan
{Mengkonstruksi sebuah objek Dermawan dari nilai-nilai masukan}
Soal 2 — 35%
Tuliskan definisi, kamus lokal, dan algoritma operator untuk merekapitulasi data Dermawan. List Rekapitulasi Dermawan hanya mencatat rangkuman, sehingga setiap Dermawan muncul sekali dengan total dana dan total barang. Jika perlu operator tambahan, tulis definisi, spesifikasi, kamus lokal, dan algoritmanya.
procedure RekapDermawan(input L:ListDermawan, output R:ListDermawan)
{I.S.: L terdefinisi, mungkin kosong}
{F.S.: R berisi rekapitulasi L}
{Proses: menambahkan elemen L ke R dengan menjumlahkan
donasi dari Dermawan yang sama}
Soal 3 — 35%
Pengelolaan Dermawan menggunakan pohon terurut. Baca List Rekapitulasi Dermawan, kemudian tambahkan simpul baru. Simpul dengan donasi Uang lebih besar ditempatkan lebih kiri. Simpul dengan donasi lebih kecil ditempatkan lebih kanan.
Buat realisasi prosedur-prosedur yang menerapkan mekanisme tersebut.
type Simpul = < info: Dermawan, left: Tree, right: Tree >
type Tree = pointer to Simpul
function Ftree(A:Dermawan, L:Tree, R:Tree) → Tree
{menghasilkan pohon baru dengan info A, anak kiri L, anak kanan R}
procedure AddDermawanUrut(input/output T:Tree, input D:Dermawan)
{I.S.: T dan D terdefinisi}
{F.S.: T bertambah 1 daun}
{Proses: menambahkan D ke posisi kiri/kanan}
Studi kasus dan soal 1 di halaman PDF 1; soal 2–3 di halaman PDF 2.