Struktur Data - Evaluasi Tengah Semester
Kelas : Struktur Data (D)
Evaluasi Tengah Semester
1. Jelaskan struktur data Array. Digunakan untuk apa Array, Berikan contoh penggunaanya dalam aplikasi!
Array adalah struktur data linear yang digunakan untuk menyimpan kumpulan elemen yang memiliki tipe data yang sama. Elemen-elemen ini disimpan pada blok memori yang bersebelahan, sehingga setiap elemen dapat diakses secara instan menggunakan sebuah indeks yang dimulai dari 0. Ukuran memori Array biasanya bersifat statis yang ditentukan saat inisialisasi.
Fungsi dan Kegunaan Array:
Menyimpan data konstan atau statis yang ukurannya sudah diketahui di awal.
Menyimpan data dalam jumlah banyak yang tipenya sama dalam satu nama variabel.
Pencarian data menggunakan indeks dengan performa waktu yang sangat cepat, yaitu O(1).
Sebagai blok bangunan dasar untuk membuat struktur data yang lebih kompleks seperti String, Stack, Deque, Queue.
Contoh Penggunaan dalam Aplikasi:
Sebagai sistem papan skor game yang bisa menyimpan daftar 10 skor tertinggi.
Sebagai pengolahan citra digital (Bitmap), dimana gambar direpresentasikan menggunakan Array 2D atau 3D yang setiap elemennya menyimpan nilai warna piksel.
Sebagai kalender ataupun penjadwalan yang mampu menyimpan jumlah hari dalam setiap bulan (contoh:
int hariPerBulan[12] = {31, 28, 31, 30, ...}).
2. Diketahui Stack berupa Linked List dengan kondisi mula-mula Stack kosong. Gambarkan Stack berupa Double Linked List tersebut beserta posisi penunjuknya (pointer), jika ada perintah :
a. Push(Top,60), Push(Top,40), Pop(Top,Item)
b. Push(Top,25), Pop(Top,Item), Pop(Top,Item)
c. Pop(Top,Item), Pop(Top,Item), Push(Top,50)
3. Diketauhui Ekspresi berikut E = a + (2·b^3)/(f − g) + d·h
- Ubahlah ke dalam notasi PostfixNotasi Postfix: a 2 b 3 ^ * f g - / + d h * +
- Implementasikan menggunakan Stack dan buat screenshot eksekusinya.
4. Diketahui maksimum Queue = 9 elemen dengan kondisi mula-mula Queue kosong.
Queue Kosong :Rear = -1
a. Tambah Angka 19
- Implementasikan menggunakan Stack dan buat screenshot eksekusinya.
Front = 0Rear = 0
b. Tambah Angka 7
Front = 0Rear = 1
c. Hapus 2 AngkaHapus ke-1:
Front = 0Rear = 0
Hapus ke-2:Queue Kosong Rear = -1
d. Tambah Angka 40
Front = 0Rear = 0
e. Hapus 3 Angka
Hapus ke-1:Queue Kosong
Rear = -1
Hapus ke-2:[ERROR: QUEUE UNDERFLOW!]
Queue Kosong
Rear = -1
Hapus ke-3:[ERROR: QUEUE UNDERFLOW!]
Queue Kosong
Rear = -1
f. Tambah Angka 18
f. Tambah Angka 18
Front = 0Rear = 0
5. Penyelesaian Studi Kasus
Studi Kasus: Antrian Layanan Akademik
- Prinsip FIFO (First In First Out)
- Sistem ini menjamin bahwa mahasiswa yang pertama kali mengambil nomor antrean akan menjadi yang pertama kali dipanggil oleh petugas. Ini mencegah adanya penyerobotan antrean.
- Representasi Dinamis
- Dengan menggunakan Linked List, setiap mahasiswa yang datang direpresentasikan sebagai sebuah Node. Sistem hanya perlu menyimpan dua koordinat utama yaitu Depan (Front) untuk tahu siapa yang harus dilayani sekarang, dan Belakang (Rear) untuk tahu di mana mahasiswa baru harus diletakkan.
- Efisiensi Memori
- Karena tidak menggunakan batasan maksimum, memori hanya akan digunakan saat ada mahasiswa yang mengantre dan akan langsung dibebaskan (dihapus) segera setelah mahasiswa tersebut selesai dilayani.
- Buat Node Baru: Menyiapkan sebuah tempat di memori (Node) untuk mahasiswa baru.
- Isi Data: Memasukkan nama mahasiswa ke dalam Node tersebut dan atur penunjuk berikutnya (Next) ke NULL.
- Cek Kondisi Antrean: Jika antrean Kosong (Belakang == NULL): Atur penunjuk Depan dan Belakang langsung ke Node baru tersebut. Jika antrean Tidak Kosong, maka menghubungkan penunjuk Next dari mahasiswa yang saat ini di posisi Belakang ke Node baru, lalu pindahkan penunjuk Belakang ke Node baru tersebut.
- Selesai: Menampilkan pesan bahwa mahasiswa telah berhasil mengambil nomor antrean.
- Cek Kondisi Antrean: Jika antrean Kosong (Depan == NULL), tampilkan pesan "Antrean Kosong" dan hentikan proses.
- Simpan Data Sementara: Menyiapkan penunjuk sementara (Temp) untuk mencatat alamat mahasiswa yang berada di posisi Depan.
- Geser Penunjuk Depan: Memindahkan penunjuk Depan ke mahasiswa berikutnya dalam antrean (Depan = Depan->Next).
- Cek Sisa Antrean: Jika setelah digeser posisi Depan menjadi NULL (artinya antrean habis), maka atur juga posisi Belakang menjadi NULL.
- Hapus Data: Menampilkan nama mahasiswa yang dilayani, lalu hapus Node yang disimpan di penunjuk sementara tadi dari memori (Free/Delete).
- Selesai: Mahasiswa telah resmi keluar dari sistem antrean.