MSIM4202 — Struktur Data
1. Seorang pengembang perlu memilih cara menyimpan data antrean pelanggan yang terus bertambah selama jam sibuk aplikasi. Faktor utama yang membedakan pemilihan antara array statis dan linked list untuk kasus ini adalah…
- A. Kemampuan menyimpan data terurut secara otomatis
- B. Kecepatan akses elemen berdasarkan indeks
- C. Kompatibilitas dengan tipe data primitif
- D. Fleksibilitas alokasi memori saat runtime
2. Sebuah pustaka kode menyediakan operasi tambah, hapus, dan cari tanpa membocorkan bagaimana data disimpan secara internal. Konsep yang diterapkan pustaka tersebut adalah…
- A. Tipe Data Abstrak
- B. Struktur Data Konkret
- C. Tipe Data Primitif
- D. Tipe Data Referensi
3. Manakah pernyataan yang tepat membedakan struktur data dari tipe data abstrak…
- A. Struktur data adalah implementasi konkret, sedangkan tipe data abstrak adalah spesifikasi perilaku
- B. Struktur data mendefinisikan operasi, sedangkan tipe data abstrak mendefinisikan penyimpanan
- C. Struktur data hanya untuk data numerik, sedangkan tipe data abstrak untuk semua jenis
- D. Struktur data bersifat dinamis, sedangkan tipe data abstrak selalu statis
4. Algoritma yang baik harus mempertimbangkan dua sumber daya utama saat memproses struktur data, yaitu…
- A. Kecepatan kompilasi dan ukuran kode sumber
- B. Waktu eksekusi dan ruang memori
- C. Jumlah variabel dan panjang nama fungsi
- D. Versi bahasa pemrograman dan sistem operasi
5. Sebuah tim mengembangkan aplikasi dengan fitur undo/redo yang harus menyimpan riwayat operasi pengguna. Struktur data yang paling sesuai menerapkan prinsip…
- A. First In, First Out
- B. Random Access
- C. Priority Ordering
- D. Last In, First Out
6. Algoritma divide and conquer seperti merge sort membagi data menjadi dua secara berulang. Basis logaritma yang muncul dalam kompleksitas waktunya adalah…
- A. log_10 n karena basis desimal lebih intuitif
- B. log_2 n karena pembagian dilakukan menjadi dua setiap langkah
- C. ln n karena menggunakan logaritma natural
- D. log_e n karena berkaitan dengan pertumbuhan eksponensial
7. Dalam konteks struktur data, relasi antar elemen yang membentuk hierarki dengan satu akar dan cabang-cabang merepresentasikan…
- A. Tree dengan parent-child relationship
- B. Graph dengan edge berbobot dua arah
- C. Himpunan dengan operasi union dan intersection
- D. Queue dengan urutan antrean linier
8. Fungsi yang memanggil dirinya sendiri untuk memproses struktur data hierarkis disebut…
- A. Fungsi linear
- B. Fungsi rekursif
- C. Fungsi iteratif
- D. Fungsi komposit
9. Himpunan mendasari operasi dasar pada struktur data kumpulan. Operasi yang tidak termasuk operasi dasar himpunan adalah…
- A. Pencarian elemen
- B. Pengurutan elemen menaik
- C. Penghapusan elemen
- D. Penyisipan elemen baru
10. Bilangan 10^6 jika dinyatakan dalam skala logaritma basis 2 kira-kira bernilai…
- A. Sekitar 10, karena log_2 10^6 setara dengan 6
- B. Sekitar 30, karena 2^30 setara dengan 10^9
- C. Sekitar 20, karena 2^20 mendekati 10^6
- D. Sekitar 60, karena log_2 10^6 = 60
11. Seorang programmer ingin membuat beberapa variasi objek dengan perilaku dasar yang sama tetapi implementasi berbeda. Konsep Java yang memungkinkan hal ini dengan mendefinisikan metode tanpa implementasi adalah…
- A. Kelas abstrak
- B. Kelas konkret
- C. Interface
- D. Pewarisan
12. Perbedaan mendasar antara kelas dan objek dalam Java adalah…
- A. Kelas dapat dieksekusi, sedangkan objek hanya cetak biru
- B. Kelas bersifat statis, sedangkan objek selalu dinamis
- C. Kelas hanya untuk tipe primitif, sedangkan objek untuk tipe referensi
- D. Kelas adalah cetak biru, sedangkan objek adalah instansiasi nyata dengan nilai atribut
13. Interface dan kelas abstrak sama-sama dapat mendefinisikan metode tanpa implementasi. Perbedaan utamanya adalah…
- A. Interface mendukung pewarisan berganda, kelas abstrak tidak
- B. Interface hanya untuk package java.util, kelas abstrak untuk package lain
- C. Interface dapat memiliki konstruktor, kelas abstrak tidak
- D. Interface selalu memiliki atribut, kelas abstrak tidak pernah
14. Sistem informasi kampus memerlukan hierarki pengguna: Mahasiswa dan Dosen memiliki atribut dasar yang sama dari Pengguna, tetapi dengan perilaku spesifik masing-masing. Konsep Java yang paling tepat adalah…
- A. Enkapsulasi, menyembunyikan data di setiap kelas
- B. Polimorfisme, menggunakan nama metode sama dengan parameter berbeda
- C. Abstraksi, menyederhanakan detail kompleks
- D. Pewarisan, menurunkan atribut dan metode dari kelas induk
15. Objek dalam Java menyimpan alamat memori, bukan nilai langsung. Karakteristik ini menunjukkan bahwa objek termasuk…
- A. Tipe data referensi
- B. Tipe data primitif dengan wrapper class
- C. Tipe data numerik
- D. Tipe data boolean
16. PT Maju Jaya memiliki sistem inventaris yang mencatat stok barang sebagai bilangan bulat. Saat menghitung total stok seluruh cabang, hasilnya bisa melebihi kapasitas Integer. Solusi yang tepat memanfaatkan…
- A. Konversi narrowing dari long ke int
- B. Array int multidimensi untuk membagi perhitungan
- C. Wrapper class Long untuk menampung hasil perhitungan
- D. Tipe data primitif short untuk efisiensi memori
17. Seorang mahasiswa mengonversi nilai double 3.99 ke tipe int. Ia mendapati nilai menjadi 3. Proses ini dinamakan…
- A. Widening casting, karena double lebih lebar dari int
- B. Boxing, karena mengubah primitif ke objek
- C. Narrowing casting, karena konversi eksplisit dengan kehilangan presisi
- D. Unboxing, karena mengubah objek ke primitif
18. Di Java, tipe data primitif menyimpan nilai langsung di memori stack, sedangkan tipe data referensi menyimpan alamat yang merujuk ke objek di heap. Karakteristik ini menunjukkan perbedaan mendasar dalam hal…
- A. nama variabel yang digunakan
- B. alokasi dan akses memori
- C. kompatibilitas dengan operator aritmatika
- D. kemampuan menampung nilai null
19. Seorang pengembang ingin menyimpan data suhu harian sebagai int. Ia memerlukan fungsi untuk mengonversi nilai tersebut menjadi representasi biner dalam bentuk String. Kelas wrapper yang menyediakan metode untuk keperluan ini adalah…
- A. Number
- B. Double
- C. Integer
- D. Object
20. Abstract Data Type (ADT) mendefinisikan operasi yang dapat dilakukan pada data tanpa mengungkap detail implementasi. Dalam Java, mekanisme bahasa yang paling tepat untuk menerapkan prinsip ADT adalah…
- A. menggabungkan interface dan kelas
- B. menggunakan tipe data primitif
- C. menerapkan pewarisan berganda
- D. mendeklarasikan variabel global
21. PT Sentosa membangun sistem yang mencatat 1000 data sensor dalam array berukuran tetap. Setelah berjalan setahun, kebutuhan meningkat menjadi 1500 data. Apa kendala utama yang dihadapi jika tetap menggunakan array yang sama…
- A. indeks array selalu dimulai dari nol
- B. setiap elemen array harus bertipe sama
- C. ukuran array tidak dapat diubah setelah alokasi
- D. array hanya dapat menyimpan tipe primitif
22. Array multidimensi di Java direpresentasikan sebagai array dari array. Konsekuensi dari representasi ini adalah…
- A. semua baris harus memiliki panjang yang sama
- B. setiap baris dapat memiliki panjang berbeda
- C. array multidimensi tidak dapat menyimpan tipe referensi
- D. indeks negatif dapat digunakan pada dimensi kedua
23. Ketika sebuah program Java mencoba mengakses elemen array pada indeks yang sama dengan panjang array, pengecualian yang dilempar adalah…
- A. IllegalArgumentException
- B. NullPointerException
- C. IndexOutOfBoundsException
- D. ArrayIndexOutOfBoundsException
24. Budi mendeklarasikan int[] angka = new int[5] lalu menginisialisasi dengan perulangan for (int i=0; i<5; i++) angka[i] = i*2. Setelah itu ia menulis for (int x : angka) System.out.print(x). Urutan output yang dihasilkan adalah…
- A. 0 2 4 6 8
- B. 0 1 2 3 4
- C. 2 4 6 8 10
- D. 0 2 4 8 16
25. Saat inisialisasi array objek, misalnya String[] nama = new String[3], nilai default setiap elemen sebelum diisi adalah…
- A. null
- B. "" (string kosong)
- C. 0
- D. undefined
26. Dalam implementasi linked list, sebuah node menyimpan data dan referensi ke node berikutnya. Jika atribut referensi next suatu node bernilai null, artinya…
- A. linked list baru saja diinisialisasi tanpa elemen
- B. node tersebut rusak dan tidak dapat digunakan
- C. node tersebut adalah elemen terakhir dalam list
- D. node tersebut adalah head dari linked list
27. PT Cahaya Nusantara membangun aplikasi pemutar musik dengan fitur previous dan next track. Struktur data internal yang paling cocok untuk menyimpan daftar putar adalah…
- A. doubly linked list
- B. singly linked list
- C. array satu dimensi
- D. queue
28. Operasi penyisipan elemen di posisi tertentu pada linked list memiliki keunggulan dibandingkan array jika…
- A. ukuran data sudah diketahui sebelumnya
- B. elemen yang disisipkan bertipe data primitif
- C. penyisipan dilakukan di akhir struktur
- D. posisi penyisipan sudah diketahui melalui referensi node
29. Alokasi dinamis pada linked list memberikan fleksibilitas ukuran. Implikasi dari karakteristik ini terhadap penggunaan memori adalah…
- A. garbage collector tidak dapat membebaskan memori node yang dihapus
- B. semua alokasi dilakukan di stack sehingga akses lebih cepat dibanding heap
- C. jumlah memori yang digunakan selalu lebih kecil daripada array
- D. memori digunakan sesuai kebutuhan saat runtime, namun ada overhead untuk referensi
30. Perbedaan utama antara singly linked list dan doubly linked list terletak pada…
- A. jumlah referensi yang dimiliki setiap node
- B. tipe data yang dapat disimpan dalam node
- C. kemampuan menyimpan nilai null
- D. bahasa pemrograman yang mendukungnya
31. Saat melakukan traversal pada singly linked list, kondisi berhenti yang tepat untuk perulangan while yang dimulai dari head adalah…
- A. node saat ini sama dengan head
- B. node saat ini bernilai null
- C. data node saat ini bernilai null
- D. node saat ini memiliki referensi ke dirinya sendiri
32. Dalam Java, deklarasi variabel primitif menentukan tipe dan nama. Jika programmer menulis int count = 10, alokasi memori terjadi di…
- A. register CPU
- B. heap
- C. stack
- D. method area
33. Konversi implisit (widening) dari int ke double di Java tidak kehilangan presisi karena…
- A. Java secara otomatis membulatkan nilai int
- B. double memiliki rentang nilai yang lebih besar daripada int
- C. int dan double memiliki ukuran bit yang sama
- D. semua bilangan bulat direpresentasikan persis dalam double
34. Rina menyimpan nilai mahasiswa dalam ArrayList. Ia perlu menghitung total nilai tanpa kehilangan presisi desimal saat membagi. Untuk mengubah setiap Integer menjadi double sebelum operasi, ia dapat memanfaatkan method…
- A. cast eksplisit (double) pada elemen ArrayList
- B. parseDouble() dari kelas Double
- C. toString() lalu konversi manual
- D. doubleValue() dari wrapper Integer
35. Seorang mahasiswa menjalankan kode int[] data = new int[10]; data[10] = 5; dan program berhenti dengan pesan kesalahan. Apa penyebab utama kegagalan tersebut…
- A. Indeks array dimulai dari satu sehingga data[10] seharusnya data[11]
- B. Indeks valid hanya dari 0 hingga 9 sehingga data[10] berada di luar rentang
- C. Array belum diinisialisasi dengan perulangan for
- D. Tipe data int tidak kompatibel dengan inisialisasi menggunakan operator new
36. Prinsip operasional yang membedakan stack dari struktur data linier lainnya adalah…
- A. Elemen diakses secara acak melalui indeks
- B. Elemen diakses berdasarkan prioritas nilai
- C. Elemen pertama yang masuk adalah yang pertama keluar
- D. Elemen terakhir yang masuk adalah yang pertama keluar
37. Budi sedang mengamati tumpukan piring di restoran. Piring yang baru dicuci diletakkan di atas, dan pelanggan mengambil piring dari atas tumpukan. Analogi ini paling tepat menggambarkan mekanisme…
- A. Operasi enqueue dan dequeue pada queue
- B. Operasi append dan remove pada array
- C. Operasi insert dan delete pada linked list
- D. Operasi push dan pop pada stack
38. Dalam sebuah aplikasi pengolah kata, fitur undo bekerja dengan menyimpan setiap perubahan yang dilakukan pengguna. Ketika tombol undo ditekan, perubahan terakhir dibatalkan terlebih dahulu. Struktur data yang mendasari fitur ini adalah…
- A. Stack karena perubahan terakhir harus diakses pertama
- B. Queue karena perubahan dikelola secara FIFO
- C. Linked list karena perubahan disimpan secara berurutan
- D. Array karena perubahan memerlukan akses acak
39. Perbedaan antara operasi pop dan peek pada stack terletak pada…
- A. Pop menghapus elemen teratas sedangkan peek hanya melihat tanpa menghapus
- B. Pop hanya berlaku pada stack kosong sedangkan peek pada stack penuh
- C. Pop menambahkan elemen sedangkan peek menghapus elemen
- D. Pop dan peek adalah operasi identik yang dapat saling menggantikan
40. Setelah beberapa kali operasi pop, sebuah stack menjadi kosong. Jika programmer tetap memanggil pop, kondisi yang terjadi disebut…
- A. Stack leak karena memori stack tidak dibebaskan
- B. Stack underflow karena pop dilakukan pada stack kosong
- C. Stack collision karena terjadi benturan pointer
- D. Stack overflow karena pop melebihi kapasitas
41. PT Logistik Nusantara mengembangkan sistem pelacakan kontainer di pelabuhan. Kontainer ditumpuk vertikal dan hanya kontainer paling atas yang dapat diakses setiap saat. Representasi paling akurat untuk kasus ini adalah stack dengan operasi…
- A. Push saat kontainer ditambahkan dan pop saat kontainer diambil
- B. Enqueue saat kontainer ditambahkan dan dequeue saat kontainer diambil
- C. Insert saat kontainer ditambahkan dan remove saat kontainer diambil
- D. Append saat kontainer ditambahkan dan delete saat kontainer diambil
42. Implementasi stack berbasis array menggunakan variabel top untuk melacak posisi elemen teratas. Ketika stack berisi tiga elemen pada indeks 0, 1, dan 2, nilai variabel top yang tepat adalah…
- A. 0 karena indeks dimulai dari nol
- B. 1 karena top menghitung jumlah push
- C. 2 karena top menunjuk ke indeks elemen teratas
- D. 3 karena top selalu satu langkah di depan elemen terakhir
43. Siti mengimplementasikan stack dengan array berukuran tetap 5 elemen. Setelah lima kali operasi push, ia mencoba push sekali lagi. Kondisi yang terjadi adalah…
- A. Stack underflow karena array tidak dapat menampung lebih banyak
- B. Stack overflow karena kapasitas array telah terlampaui
- C. ArrayIndexOutOfBoundsException karena indeks 5 tidak valid
- D. Realokasi otomatis menggandakan ukuran array
44. Dalam implementasi stack berbasis array dinamis, operasi push sesekali memicu realokasi saat array penuh. Meskipun demikian, kompleksitas diamortisasi push tetap O(1) karena…
- A. Realokasi hanya terjadi sekali untuk setiap elemen yang dimasukkan
- B. Array dinamis tidak pernah memerlukan realokasi memori
- C. Biaya realokasi didistribusikan ke banyak operasi push yang murah
- D. Realokasi dilakukan secara paralel dengan operasi push berikutnya
45. Perbedaan utama antara stack overflow dan stack underflow pada implementasi array adalah…
- A. Overflow terjadi saat array penuh, underflow terjadi saat array kosong
- B. Overflow disebabkan oleh operasi pop, underflow oleh operasi push
- C. Overflow hanya terjadi pada array dinamis, underflow pada array statis
- D. Overflow berkaitan dengan memori heap, underflow dengan memori stack
46. Seorang pengembang Java menulis import java.util.Stack dan menggunakan kelas Stack untuk menyimpan data. Namun koleganya menyarankan menggunakan ArrayDeque. Alasan utama rekomendasi tersebut adalah…
- A. ArrayDeque memiliki lebih banyak metode dibandingkan kelas Stack
- B. Kelas Stack sudah ditandai usang dan akan dihapus di versi Java berikutnya
- C. ArrayDeque mendukung tipe data primitif sedangkan Stack hanya objek
- D. ArrayDeque menawarkan performa lebih baik dan implementasi stack yang lebih konsisten
47. Dalam Java, perbedaan antara Stack (kelas) dan Deque (interface) ketika digunakan sebagai stack adalah…
- A. Stack hanya menyimpan String sedangkan Deque mendukung tipe generik
- B. Stack adalah interface sedangkan Deque adalah kelas konkret
- C. Stack mendukung LIFO sedangkan Deque hanya mendukung FIFO
- D. Stack mewarisi Vector sedangkan Deque berdiri sendiri tanpa pewarisan
48. Metode call stack di Java Virtual Machine bekerja berdasarkan prinsip stack. Ketika method A memanggil method B yang memanggil method C, urutan penyelesaian eksekusi method adalah…
- A. A selesai dulu, lalu B, lalu C
- B. Semua method selesai bersamaan
- C. C selesai dulu, lalu B, lalu A
- D. Urutan penyelesaian tidak dapat ditentukan
49. Aplikasi kalkulator ilmiah perlu mengevaluasi ekspresi matematika seperti (3 + 5) × (2 – 8). Struktur data yang berperan dalam mengonversi notasi infiks ke postfiks serta mengevaluasinya adalah…
- A. Stack untuk menyimpan operator dan operand selama konversi dan evaluasi
- B. Queue untuk menyimpan operand dan stack untuk menyimpan operator
- C. Array untuk menyimpan seluruh ekspresi dan linked list untuk traversal
- D. Tree untuk merepresentasikan hierarki operator
50. Sistem antrean teller bank melayani pelanggan berdasarkan urutan kedatangan. Pelanggan pertama yang datang akan dilayani pertama kali. Prinsip ini dikenal sebagai…
- A. LIFO karena pelanggan terakhir bisa keluar duluan
- B. FIFO karena pelanggan pertama masuk adalah yang pertama keluar
- C. Priority order karena pelanggan prioritas dilayani duluan
- D. Random order karena urutan pelayanan tidak ditentukan
51. Operasi enqueue pada queue selalu menambahkan elemen baru di bagian rear. Konsekuensi dari aturan ini terhadap urutan elemen adalah…
- A. Elemen yang paling lama berada di queue akan keluar terakhir
- B. Elemen baru dapat disisipkan di posisi mana pun
- C. Elemen baru selalu berada di posisi paling belakang antrean
- D. Elemen baru langsung diproses tanpa mengantre
52. Seorang pengelola event mengamati antrean peserta yang baru tiba selalu bergabung di barisan paling belakang, sementara panitia hanya memanggil peserta dari barisan paling depan. Prinsip dasar yang menjamin keadilan urutan pelayanan ini adalah…
- A. LIFO – Last In, First Out
- B. FIFO – First In, First Out
- C. Priority-based ordering
- D. Random access ordering
53. Setelah serangkaian operasi dequeue, front pada queue linear berbasis array bergeser meninggalkan slot kosong di depan yang tidak dapat digunakan kembali tanpa mekanisme khusus. Istilah yang paling tepat untuk fenomena ini adalah…
- A. Memory leak pada queue
- B. Queue underflow semu
- C. Fragmentasi internal queue
- D. Indikasi penuh palsu
54. Di Java, antarmuka Queue merupakan kontrak yang mendefinisikan perilaku dasar sebuah antrean. Salah satu kelas konkret yang mengimplementasikan antarmuka ini sekaligus mendukung penyisipan dan penghapusan di kedua ujung adalah…
- A. PriorityQueue
- B. ArrayList
- C. Stack
- D. LinkedList
55. PT Cepat Kirim mengembangkan aplikasi logistik yang memproses paket berdasarkan tingkat urgensi: paket berlabel 'Prioritas Tinggi' harus dikeluarkan lebih dulu meskipun datang belakangan. Implementasi Queue di Java yang paling sesuai untuk kasus ini adalah…
- A. ArrayDeque yang dioperasikan sebagai stack
- B. PriorityQueue dengan komparator berdasarkan tingkat urgensi
- C. LinkedList dengan pengurutan manual tiap enqueue
- D. Circular queue berbasis array biasa
56. Operasi enqueue pada queue selalu menyisipkan elemen baru pada posisi rear. Implikasi langsung dari aturan ini terhadap traversal elemen adalah…
- A. Elemen dengan nilai terkecil selalu berada di front
- B. Urutan traversal selalu sama dengan urutan penyisipan
- C. Elemen baru otomatis menjadi front setelah enqueue
- D. Traversal mundur hanya mungkin jika queue kosong
57. Perbedaan prinsipil antara operasi dequeue pada queue dan operasi pop pada stack terletak pada…
- A. dequeue menghapus elemen yang sudah paling lama berada dalam struktur, sedangkan pop menghapus elemen yang paling baru masuk…
- B. dequeue memerlukan parameter elemen yang akan dihapus, sedangkan pop tidak memerlukan parameter apa pun…
- C. dequeue dapat dilakukan terhadap elemen di posisi mana pun, sedangkan pop hanya dapat dilakukan pada elemen di posisi atas…
- D. dequeue mengembalikan nilai boolean yang menyatakan keberhasilan, sedangkan pop mengembalikan elemen yang dihapus…
58. Dalam implementasi circular queue berbasis array, front dan rear dimanipulasi mengelilingi array. Ketika rear tepat satu langkah di belakang front setelah operasi enqueue, kondisi yang terjadi adalah…
- A. Queue dalam keadaan penuh
- B. Queue tepat setengah penuh
- C. Queue dalam keadaan kosong
- D. Terjadi queue underflow
59. Sistem antrean rumah sakit menggunakan circular queue berbasis array dengan kapasitas 10. Setelah 3 kali enqueue diikuti 2 kali dequeue, lalu 8 kali enqueue, berapa nilai front dan rear jika indeks dimulai dari 0 dan front menunjuk ke elemen pertama…
- A. front = 2, rear = 8
- B. front = 0, rear = 8
- C. front = 2, rear = 0
- D. front = 0, rear = 9
60. Seorang pengembang menggunakan kelas Stack warisan Java untuk queue, namun kolega menyarankan beralih ke ArrayDeque. Alasan paling teknis yang mendasari saran tersebut adalah…
- A. Stack adalah kelas warisan yang tidak efisien karena berbasis Vector, sementara ArrayDeque adalah implementasi modern dengan performa lebih baik
- B. Stack mendukung operasi thread-safe, ArrayDeque tidak
- C. ArrayDeque secara otomatis mengurutkan elemen, Stack tidak
- D. Stack hanya bisa menyimpan tipe primitif, ArrayDeque mendukung objek
61. Antarmuka Queue di Java tidak menjamin urutan elemen sesuai FIFO pada setiap implementasi. Contoh implementasi Queue yang tidak mengikuti urutan penyisipan murni adalah…
- A. PriorityQueue yang mengeluarkan elemen berdasarkan komparator
- B. ArrayDeque saat digunakan sebagai Queue
- C. LinkedList saat digunakan sebagai Queue
- D. ConcurrentLinkedQueue pada akses single-thread
62. Budi mengamati bahwa setelah serangkaian operasi enqueue dan dequeue, slot-slot kosong di bagian depan array tidak terpakai kembali pada queue linear, sehingga kapasitas efektif berkurang. Teknik implementasi queue berbasis array yang secara langsung mengatasi masalah ini adalah…
- A. Menggandakan ukuran array setiap kali penuh
- B. Menggeser semua elemen ke depan setelah setiap dequeue
- C. Menggunakan circular queue dengan pointer front dan rear melingkar
- D. Menggunakan linked list sebagai pengganti array
63. Seorang pengembang ingin mengimplementasikan queue yang aman untuk akses konkuren dari banyak thread pada aplikasi server. Implementasi Queue di Java yang paling tepat untuk kebutuhan ini adalah…
- A. LinkedList yang dibungkus manual dengan synchronized block
- B. PriorityQueue dengan komparator khusus
- C. ConcurrentLinkedQueue dari paket java.util.concurrent
- D. ArrayDeque dengan modifikasi thread-safe
64. Algoritma pengurutan dikatakan stabil jika setelah pengurutan, dua elemen dengan nilai kunci yang sama…
- A. Posisinya ditukar secara konsisten
- B. Urutan relatifnya dipertahankan seperti sebelum pengurutan
- C. Ditempatkan di awal dan akhir array secara berselang-seling
- D. Digabungkan menjadi satu elemen tunggal
65. Seorang analis membandingkan dua algoritma: Algoritma X mengurutkan dengan membandingkan pasangan elemen dan memiliki kompleksitas rata-rata O(n^2), sedangkan Algoritma Y membagi array menjadi dua bagian secara rekursif, mengurutkan masing-masing, lalu menggabungkan dengan kompleksitas O(n log n). Klasifikasi yang tepat untuk Algoritma Y adalah…
- A. Algoritma divide and conquer yang memerlukan memori tambahan
- B. Algoritma in-place dengan pembagian dua arah
- C. Algoritma non-pembanding dengan stabilitas tinggi
- D. Algoritma sorting linier untuk data numerik terbatas
66. Di sebuah sistem perbankan, data transaksi nasabah harus diurutkan berdasarkan waktu transaksi. Jika ada dua transaksi dengan waktu yang sama, urutan masuknya ke sistem harus dipertahankan. Kriteria algoritma sorting yang mutlak diperlukan dalam kasus ini adalah…
- A. Algoritma in-place dengan penggunaan memori minimal
- B. Algoritma non-pembanding berbasis distribusi frekuensi
- C. Algoritma dengan kompleksitas O(n) untuk data waktu transaksi
- D. Algoritma stabil yang mempertahankan urutan relatif data bernilai sama
67. Counting sort bekerja dengan menghitung frekuensi kemunculan setiap nilai kunci dalam rentang tertentu. Kompleksitas waktu O(n + k) pada counting sort menunjukkan bahwa algoritma ini…
- A. Selalu lebih cepat dari merge sort untuk semua ukuran data
- B. Hanya bisa digunakan pada data bertipe integer 32-bit
- C. Membutuhkan perbandingan antar elemen sebanyak O(n + k) kali
- D. Cocok untuk data dengan rentang nilai k yang kecil relatif terhadap n
68. Dibandingkan dengan merge sort yang memiliki kompleksitas O(n log n) di semua kasus, counting sort memiliki keunggulan dan keterbatasan spesifik. Manakah pernyataan yang paling akurat membandingkan keduanya…
- A. Counting sort dan merge sort sama-sama membutuhkan memori tambahan O(n) untuk proses penggabungan
- B. Merge sort adalah algoritma non-pembanding, sedangkan counting sort adalah algoritma pembanding
- C. Counting sort dapat mencapai O(n) pada kondisi ideal, tetapi tidak dapat menangani data dengan kunci negatif tanpa modifikasi, sementara merge sort konsisten O(n log n) untuk semua tipe data yang dapat dibandingkan
- D. Merge sort selalu lebih cepat dari counting sort karena menggunakan pendekatan divide and conquer
69. Sebuah platform e-commerce memproses jutaan transaksi per hari dan perlu menyusun laporan penjualan harian. Pengembang memutuskan untuk mengurutkan data transaksi menggunakan algoritma yang tetap menjaga urutan asli transaksi dengan jumlah yang sama…
- A. Algoritma bersifat in-place
- B. Algoritma menggunakan divide and conquer
- C. Algoritma memiliki kompleksitas O(n log n)
- D. Algoritma bersifat stabil
70. Rudi sedang mengembangkan aplikasi embedded dengan memori terbatas. Ia harus mengurutkan data langsung di dalam array yang sudah ada tanpa mengalokasikan array baru. Karakteristik algoritma sorting yang harus dicari Rudi adalah…
- A. In-place sorting
- B. Divide and conquer
- C. Stable sorting
- D. Non-comparison sorting
71. Konsep tree merepresentasikan data dengan hubungan hierarkis. Manakah contoh nyata yang paling tepat untuk representasi tree…
- A. Daftar kontak telepon dalam urutan abjad
- B. Tumpukan kardus di gudang logistik
- C. Antrean nasabah di teller bank
- D. Struktur organisasi perusahaan dengan direktur di puncak
72. Node yang tidak memiliki anak dalam tree disebut leaf. Pada sistem file komputer, direktori yang tidak berisi subdirektori manapun tetapi mungkin berisi file dapat dianalogikan sebagai…
- A. Root
- B. Leaf
- C. Child
- D. Parent
73. PT Inovasi Digital mendokumentasikan produk menggunakan tree dengan 5 level. Jarak dari root ke suatu leaf berjumlah 4 edge. Di saat yang sama, leaf lain memiliki jarak 2 edge. Pernyataan yang benar tentang tree tersebut adalah…
- A. Height tree adalah 4 dan depth leaf pertama adalah 2
- B. Height tree adalah 4 dan depth leaf pertama adalah 4
- C. Height tree adalah 2 dan depth leaf pertama adalah 2
- D. Height tree adalah 4 dan depth leaf pertama adalah 5
74. Struktur tree memungkinkan pengambilan sebagian struktur yang terdiri dari suatu node beserta seluruh keturunannya. Bagian tree yang terbentuk ini disebut…
- A. Subtree
- B. Path
- C. Branch
- D. Level
75. Perbedaan mendasar antara struktur data tree dan graph adalah…
- A. Tree selalu memiliki edge berarah, sedangkan graph tidak
- B. Tree hanya memiliki maksimal dua anak per node, sedangkan graph tidak terbatas
- C. Tree tidak mengandung siklus dan membentuk hierarki tunggal, sedangkan graph dapat mengandung siklus
- D. Tree menggunakan adjacency list, sedangkan graph menggunakan adjacency matrix
76. Binary tree membatasi setiap node memiliki paling banyak dua anak. Dalam pohon keputusan biner untuk sistem diagnosis medis, setiap node merepresentasikan pertanyaan ya/tidak. Jika seorang programmer mendapati sebuah node memiliki tiga cabang jawaban, maka…
- A. Tree tersebut adalah full binary tree
- B. Tree tersebut bukan binary tree
- C. Tree tersebut adalah complete binary tree
- D. Tree tersebut adalah balanced binary tree
77. Sebuah binary tree memiliki 15 node. Semua level terisi penuh kecuali level terakhir yang memiliki 4 node di sisi paling kiri. Karakteristik binary tree ini paling tepat disebut…
- A. Full binary tree
- B. Perfect binary tree
- C. Complete binary tree
- D. Balanced binary tree
78. PT Sistem Terdistribusi mengelola binary tree dengan 1000 node. Manakah kondisi yang membuat binary tree tergolong full…
- A. Semua level terisi penuh
- B. Setiap node memiliki tepat 0 atau 2 anak
- C. Tinggi subtree kiri dan kanan berbeda maksimal 1
- D. Semua node berada di level paling kiri
79. Perbedaan antara full binary tree dan complete binary tree adalah…
- A. Full binary tree semua level penuh, complete binary tree hanya level terakhir yang mungkin tidak penuh
- B. Full binary tree hanya untuk tree dengan tinggi genap, complete binary tree untuk semua tinggi
- C. Full binary tree selalu balanced, complete binary tree tidak
- D. Full binary tree setiap node punya 0 atau 2 anak, complete binary tree semua level penuh kecuali mungkin level terakhir diisi dari kiri
80. Binary tree yang memastikan perbedaan tinggi subtree kiri dan kanan setiap node tidak lebih dari satu disebut balanced binary tree. Tujuan utama penyeimbangan ini adalah…
- A. Mengurangi penggunaan memori
- B. Memungkinkan penyimpanan data terurut
- C. Memudahkan traversal post-order
- D. Mempercepat operasi pencarian, penyisipan, dan penghapusan
81. Binary Search Tree mensyaratkan semua nilai di subtree kiri lebih kecil dan subtree kanan lebih besar dari root. Seorang mahasiswa membuat BST dan menemukan angka 25 berada di subtree kiri dari node 20. Kondisi ini menunjukkan…
- A. Tree tersebut melanggar properti BST
- B. Sifat rekursif BST sedang bekerja
- C. BST dalam keadaan seimbang sempurna
- D. Tree tersebut adalah complete BST
82. Pencarian di BST rata-rata memiliki kompleksitas O(log n). Fondasi yang memungkinkan efisiensi ini adalah…
- A. Setiap node memiliki dua anak
- B. Tree selalu berbentuk complete
- C. Properti urutan yang mengeliminasi setengah tree di setiap langkah
- D. Semua leaf berada di level yang sama
83. PT Data Terpadu memasukkan data pelanggan ke BST secara terurut berdasarkan ID: 1001, 1002, 1003,…, 1100. Setelah semua data masuk, bentuk BST yang terbentuk menyerupai…
- A. Complete binary tree
- B. Balanced binary tree
- C. Linked list
- D. Full binary tree
84. Seorang pengembang ingin melakukan pencarian data di BST secara efisien. Ia menyadari bahwa meskipun rata-rata pencarian O(log n), pada kasus terburuk kompleksitasnya dapat menjadi O(n). Faktor utama yang menyebabkan degradasi ini adalah…
- A. Tree tidak seimbang karena data dimasukkan terurut
- B. Jumlah node dalam tree terlalu sedikit
- C. Tree menggunakan representasi adjacency list
- D. Data yang dicari selalu berada di root
85. Sebuah perusahaan logistik memodelkan rute pengiriman antar kota. Setiap kota adalah entitas, dan jalan yang menghubungkan dua kota memiliki jarak tempuh tertentu. Elemen graph yang merepresentasikan jarak tempuh tersebut adalah…
- A. Edge dengan bobot
- B. Vertex dengan atribut
- C. Adjacency list dengan indeks
- D. Directed edge tanpa label
86. Di media sosial, hubungan pertemanan bersifat dua arah: jika A berteman dengan B, maka B juga berteman dengan A. Jenis graph yang paling tepat untuk memodelkan hubungan ini adalah…
- A. Directed graph
- B. Weighted graph
- C. Cyclic graph
- D. Undirected graph
87. Graph yang setiap edgenya memiliki penunjuk arah dari satu vertex ke vertex lain disebut directed graph. Manakah situasi nyata yang paling sesuai direpresentasikan dengan directed graph…
- A. Jaringan pipa air dua arah antar rumah
- B. Koneksi Wi-Fi yang saling terhubung antar perangkat
- C. Aliran pengikut di Twitter tanpa kewajiban follow-back
- D. Jalan tol yang dapat dilalui dari kedua arah
88. Vertex merepresentasikan entitas, sedangkan edge menghubungkan pasangan vertex. Dalam graph jadwal penerbangan, edge yang tidak memiliki bobot akan kehilangan informasi penting berupa…
- A. Nama bandara keberangkatan
- B. Arah penerbangan antar bandara
- C. Jumlah penumpang maksimal
- D. Durasi atau harga tiket penerbangan
89. Sebuah tim pengembang membuat aplikasi navigasi dengan 10.000 titik lokasi yang saling terhubung hanya rata-rata 3 jalan per titik. Representasi graph yang paling efisien dalam penggunaan memori untuk kasus ini adalah…
- A. Adjacency matrix berukuran 10.000 × 10.000
- B. Incidence matrix berukuran vertex × edge
- C. Edge list yang diurutkan berdasarkan bobot
- D. Adjacency list dengan array of linked list
90. Graph padat memiliki jumlah edge mendekati jumlah maksimum edge yang mungkin. Untuk graph dengan 500 vertex yang hampir semua pasangan vertex terhubung, representasi yang memberikan akses O(1) untuk memeriksa keberadaan edge adalah…
- A. Adjacency list
- B. Edge list
- C. Adjacency matrix
- D. Adjacency set
91. PT Jaringan Cepat mengelola jaringan fiber optik yang menghubungkan 200 gedung. Tim teknis sering perlu memeriksa apakah dua gedung terhubung langsung dalam waktu konstan. Representasi graph yang memenuhi kebutuhan ini dengan trade-off memori tertinggi adalah…
- A. Adjacency list berbasis array dinamis
- B. Edge list dengan pencarian linear
- C. Adjacency matrix boolean 200 × 200
- D. Adjacency list dengan binary search tree
92. Budi memodelkan jaringan komputer kampus menggunakan adjacency list. Setiap vertex menyimpan daftar tetangga dalam linked list. Ketika Budi perlu mengiterasi semua tetangga dari satu vertex, kompleksitas waktu operasi ini sebanding dengan…
- A. Derajat vertex yang bersangkutan
- B. Jumlah total vertex dalam graph
- C. Jumlah edge dalam graph
- D. Kuadrat jumlah vertex
93. Dalam penelusuran graph, algoritma DFS mengeksplorasi cabang sedalam mungkin sebelum kembali ke percabangan. Struktur data yang secara implisit digunakan oleh DFS rekursif untuk melacak jalur penelusuran adalah…
- A. Queue dengan antrean FIFO
- B. Call stack dari fungsi rekursif
- C. Priority queue berdasarkan bobot
- D. Linked list dengan pointer prev
94. BFS mengunjungi semua vertex pada jarak k dari sumber sebelum mengunjungi vertex pada jarak k+1. Properti ini menjamin BFS dapat menemukan…
- A. Semua siklus dalam graph berbobot
- B. Jalur terpendek pada graph tanpa bobot
- C. Topological order dari directed acyclic graph
- D. Spanning tree dengan bobot minimum
95. Siti menerapkan BFS pada graph yang merepresentasikan jaringan sosial. Ia menggunakan struktur data queue untuk menyimpan vertex yang antre dikunjungi. Urutan vertex yang dikunjungi BFS dari sumber A adalah A, lalu seluruh tetangga langsung A, lalu tetangga dari tetangga A, dan seterusnya. Pola kunjungan ini mencerminkan…
- A. Traversal level demi level
- B. Traversal terdalam terlebih dahulu
- C. Traversal acak berbasis bobot
- D. Traversal mundur dari leaf ke root
96. Seorang pengembang mendeteksi keberadaan siklus dalam dependency graph modul perangkat lunak. Ia memilih DFS karena algoritma ini dapat mengenali back edge selama traversal. Back edge pada DFS mengindikasikan…
- A. Vertex yang belum pernah dikunjungi
- B. Vertex yang masih dalam stack rekursi saat ini
- C. Vertex yang sudah selesai diproses seluruh tetangganya
- D. Vertex dengan derajat masuk paling tinggi
97. Mahasiswa menjalankan linear search pada array berisi 1 juta data acak. Berapa perbandingan maksimum yang mungkin dilakukan sebelum menemukan atau memastikan elemen tidak ada…
- A. 1 perbandingan
- B. Sekitar 20 perbandingan
- C. 1.000.000 perbandingan
- D. 500.000 perbandingan
98. Binary search membagi ruang pencarian menjadi setengah setiap iterasinya. Prasyarat mutlak yang harus dipenuhi agar binary search bekerja dengan benar adalah…
- A. Data harus berjumlah genap
- B. Data harus sudah terurut
- C. Data harus disimpan dalam array dinamis
- D. Data harus tidak mengandung duplikat
99. Sebuah kamus digital menyimpan 100.000 kata dalam array terurut. Pengguna dapat mencari definisi kata dengan sangat cepat. Algoritma yang digunakan memanfaatkan pembagian ruang pencarian secara berulang dan memiliki kompleksitas…
- A. O(1) konstan
- B. O(n) linear
- C. O(n log n) linearitmik
- D. O(log n) logaritmik
100. Seorang analis membandingkan linear search dan binary search pada dataset berukuran 1 miliar. Linear search rata-rata memerlukan 500 juta perbandingan, sedangkan binary search hanya memerlukan sekitar 30 perbandingan. Perbedaan sangat besar ini diakibatkan oleh…
- A. Linear search memproses setiap elemen, sedangkan binary search mengeliminasi setengah data tiap langkah
- B. Binary search hanya bekerja pada data numerik
- C. Linear search memerlukan memori tambahan
- D. Binary search menggunakan perangkat keras khusus
Latihan Tambahan dengan AI
Salin prompt di bawah ini, lalu tempelkan ke ChatGPT, Gemini, Claude, atau AI lainnya untuk mendapatkan 50 soal latihan baru dengan materi yang sama. Soal yang dihasilkan AI akan berbeda dari soal di halaman ini.