Struktur Data - Evaluasi Tengah Semester

Nama    : Aga Nafta Filadelfiano
NRP      : 5025251055
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)

1) Stack Kosong 


2) Push(Top,60)


3) Push(Top,40)


4) Pop(Top,Item)


b. Push(Top,25), Pop(Top,Item), Pop(Top,Item)

1) Stack Kosong 


2) Push(Top,25)


3) Pop(Top,Item)

4) Pop(Top,Item)
[ ERROR: STACK UNDERFLOW! ] 
Karena stack sudah kosong

c. Pop(Top,Item), Pop(Top,Item), Push(Top,50)

1) Stack Kosong 


2) Pop(Top,Item)
[ ERROR: STACK UNDERFLOW! ]
Karena stack sudah kosong

3) Pop(Top,Item)
[ ERROR: STACK UNDERFLOW! ]
Karena stack sudah kosong

4) Push(Top,50)



3. Diketauhui Ekspresi berikut E = a + (2·b^3)/(f − g) + d·h

- Ubahlah ke dalam notasi Postfix
Notasi Postfix: a 2 b 3 ^ * f g - / + d h * +

- Implementasikan menggunakan Stack dan buat screenshot eksekusinya.


Output:



4. Diketahui maksimum Queue = 9 elemen dengan kondisi mula-mula Queue kosong.

Queue Kosong :

Front = -1
Rear = -1

a. Tambah Angka 19


Front = 0
Rear = 0

b. Tambah Angka 7


Front = 0
Rear = 1

c. Hapus 2 Angka
Hapus ke-1:

Front = 0
Rear = 0

Hapus ke-2:
Queue Kosong 

Front = -1
Rear = -1

d. Tambah Angka 40


Front = 0
Rear = 0

e. Hapus 3 Angka

Hapus ke-1:
Queue Kosong 


Front = -1
Rear = -1

Hapus ke-2:
[ERROR: QUEUE UNDERFLOW!]

Queue Kosong 


Front = -1
Rear = -1

Hapus ke-3:
[ERROR: QUEUE UNDERFLOW!]

Queue Kosong 


Front = -1
Rear = -1


f. Tambah Angka 18


Front = 0
Rear = 0


5. Penyelesaian Studi Kasus

Studi Kasus: Antrian Layanan Akademik

Deskripsi Masalah
Di sebuah kampus, mahasiswa sering datang ke bagian layanan akademik (misalnya untuk
KRS, surat aktif kuliah, atau konsultasi administrasi). Untuk menjaga keteraturan, sistem
menggunakan antrian (queue) dengan prinsip:
FIFO (First In First Out) → yang datang lebih dulu, dilayani lebih dulu.

Sebuah sistem akademik memiliki fitur:
1. Mahasiswa mengambil nomor antrian.
2. Petugas melayani mahasiswa berdasarkan urutan.
3. Sistem dapat menampilkan antrian saat ini.
4. Sistem dapat mengecek siapa yang sedang dilayani.
5. Enqueue → Mahasiswa mengambil nomor
6. Dequeue → Mahasiswa dipanggil
7. Front → Mahasiswa yang sedang dilayani
8. Rear → Mahasiswa terakhir dalam antrian

Pertanyaan:

1. Jelaskan bagaimana struktur data queue digunakan dalam sistem ini.
Dalam sistem layanan akademik, Queue (Antrean) digunakan sebagai pengatur lalu lintas data mahasiswa agar proses pelayanan berjalan tertib. Rincian penggunaannya adalah sebagai berikut:
  • 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.

2. Buat algoritma untuk:

    - Menambahkan mahasiswa ke antrian (enqueue)
  • 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.

    - Melayani mahasiswa (dequeue)
  • 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.
3. Implementasikan program sederhana menggunakan bahasa pemrograman C++
Syntax Program:


4. Simulasikan proses:
    - Mahasiswa A, B, C masuk antrian
    - Mahasiswa pertama dilayani
    - Tambah mahasiswa D
    - Tampilkan kondisi antrian

Output Hasil Simulasi:



Source Code: GitHub

Postingan populer dari blog ini

Curiculum Vitae - Aga Nafta Filadelfiano

Struktur Data - Studi Kasus Stack

Struktur Data - Tipe Data & Array