Evaluasi Tengah Semester (ETS)

Nama : Jonathan Evan Roestamadji
NRP : 5025251026
Kelas : Struktur Data (D)

1. Penjelasan Struktur Data Array

Apa itu Array?

Struktur data Array adalah sekumpulan elemen data dengan tipe yang sama yang disimpan dalam lokasi memori yang berurutan. Semua data ini disimpan dalam satu variabel tunggal, di mana setiap elemen dapat diakses secara spesifik menggunakan nomor posisi atau yang disebut dengan index (dimulai dari angka 0).

Contoh Implementasi Real-World:

"Pada aplikasi E-commerce, Array digunakan untuk menyimpan daftar barang dalam keranjang belanja (shopping cart) sebelum pengguna melakukan proses checkout."

Contoh Kode Pemrograman:

buah = ["Apel", "Jeruk", "Mangga"]

Cara Mengakses Data Array:

Data diambil berdasarkan nomor indeksnya di dalam kurung siku []:

Kode Hasil / Output
buah[0] ⇒ "Apel"
buah[1] ⇒ "Jeruk"
buah[2] ⇒ "Mangga"

2. Visualisasi Stack (Doubly Linked List) - Updated

a. Push(60), Push(40), Pop(Item)

Proses: 60 masuk, 40 masuk di atas 60, lalu 40 dikeluarkan.

Top ↓
NULL ← [ 60 ] → NULL

Kondisi Akhir: Stack berisi 60. Top menunjuk ke node 60.

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

Proses: Melanjutkan (a), 25 masuk lalu di-pop, terakhir 60 di-pop.

EMPTY STACK (Top → NULL)

Kondisi Akhir: Semua elemen telah keluar, penunjuk Top kembali ke NULL.

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

Proses: Dua kali Pop pada stack kosong (Underflow), lalu Push 50.

Top ↓
NULL ← [ 50 ] → NULL

Kondisi Akhir: Stack berisi 50. Top menunjuk ke node 50.

Pada Stack Linked List, Top selalu menyimpan alamat memori dari node paling atas. Jika node tersebut adalah satu-satunya elemen, maka pointer next dan prev pada node itu akan bernilai NULL.

3. Notasi Postfix & Implementasi Stack

A. Konversi Infix ke Postfix

Infix: a + (2 * b^3) / (f - g) + d * h

Postfix: a 2 b 3 ^ * f g - / + d h * +

B. Alur Kerja Stack

  • Operand (a, b, 2, dll) langsung dikirim ke output.
  • Operator disimpan di dalam Stack berdasarkan urutan prioritas (Presedensi).
  • Jika operator baru memiliki prioritas lebih rendah/sama, operator di dalam stack di-pop ke output.
  • Tanda kurung () memastikan operasi di dalamnya diselesaikan terlebih dahulu.

C. Screenshot Eksekusi Program (C++)

Hasil Eksekusi C++

Terminal output menunjukkan hasil konversi yang sesuai.

4. Visualisasi Operasi Queue (Maks 9 Elemen)

Aturan Queue: Data masuk dari arah Rear (Kanan → Kiri) dan keluar dari arah Front (Kiri).

a. Tambah Angka 19

19 F,R
← Masuk

b. Tambah Angka 7

19 F
7 R
← Masuk

c. Hapus 2 Angka

QUEUE KOSONG (19 & 7 Keluar →)

d. Tambah Angka 40

40 F,R
← Masuk

e. Hapus 3 Angka

(Hanya ada angka 40, sisa 2 penghapusan menyebabkan Underflow)

QUEUE KOSONG

f. Tambah Angka 18

18 F,R
← Masuk

Kondisi Akhir: Queue berisi 18 di posisi Front sekaligus Rear.

5. Studi Kasus: Antrian Layanan Akademik

1. Penggunaan Queue dalam Sistem

Dalam sistem layanan akademik ini, Queue digunakan untuk mengelola urutan kedatangan mahasiswa secara adil. Prinsip FIFO (First In First Out) memastikan bahwa mahasiswa yang mengambil nomor antrian lebih awal akan mendapatkan pelayanan terlebih dahulu. Struktur ini mencegah terjadinya penumpukan yang tidak teratur di meja petugas.

2. Algoritma Sistem

A. Menambahkan Mahasiswa (Enqueue):
  1. Cek apakah kapasitas antrian mencukupi.
  2. Jika tersedia, masukkan data mahasiswa di posisi Rear (belakang).
  3. Update penunjuk Rear ke elemen baru tersebut.

B. Melayani Mahasiswa (Dequeue):
  1. Cek apakah antrian kosong (IsEmpty).
  2. Jika tidak kosong, panggil data mahasiswa di posisi Front (depan).
  3. Hapus elemen terdepan dan geser penunjuk Front ke mahasiswa berikutnya.

3. Implementasi Program (C++)

Implementasi menggunakan library <queue> untuk manajemen data dinamis:

Output Program:

--- Mahasiswa A, B, C masuk antrian ---
Kondisi Antrian saat ini: [Mahasiswa A] [Mahasiswa B] [Mahasiswa C]

--- Melayani: Mahasiswa A ---
Kondisi Antrian saat ini: [Mahasiswa B] [Mahasiswa C]

--- Mahasiswa D masuk antrian ---
Kondisi Antrian saat ini: [Mahasiswa B] [Mahasiswa C] [Mahasiswa D]

Mahasiswa di antrian paling depan (Front): Mahasiswa B
Mahasiswa di antrian paling belakang (Rear): Mahasiswa D

4. Simulasi Proses

Berdasarkan simulasi program:

  • Antrian Awal: Tiga mahasiswa masuk (A, B, C). Front di A, Rear di C.
  • Proses Layanan: Mahasiswa A dipanggil (pop), sehingga Front berpindah ke B.
  • Penambahan: Mahasiswa D masuk dan menempati posisi Rear yang baru.
  • Hasil Akhir: Antrian menyisakan B, C, D secara berurutan.

Comments

Popular posts from this blog

Documentation C++ Programming

Aplikasi Penggunaan Stack