Soalut.com gratis berkat dukungan kamu. Bantu kami tetap online.❤ Gratis selamanya

Donasi sekarang

Soal UAS UT MSIM4202 Struktur Data dan Kunci Jawaban

Aplikasi Resmi

Soalut.com — Soal Ujian UT

★★★★★ · Gratis · 9 MB · Android
Unduh
Soal UAS UT MSIM4202 Struktur Data dan Kunci Jawaban
Soal UT MSIM4202 Struktur Data

Bagi mahasiswa Universitas Terbuka, masa menjelang UAS selalu datang dengan tekanan tersendiri. Bukan sekadar soal niat belajar, tapi soal strategi. Bagaimana caranya mengolah tumpukan modul menjadi pemahaman yang benar-benar bisa digunakan saat mengerjakan Soal UAS UT MSIM4202 Struktur Data di hari H.

Mata kuliah MSIM4202 Struktur Data bukan mata kuliah yang bisa dianggap enteng. Materi di dalamnya mencakup konsep-konsep yang membutuhkan pemahaman logis dan terstruktur. Kalau kamu hanya membaca modul tanpa pernah mencoba mengerjakan Soal Ujian UT.

Di sinilah latihan soal berperan besar. Dengan rutin mengerjakan Soal UAS UT, kamu bisa mengenali pola soal yang sering muncul, mengukur seberapa jauh pemahamanmu, dan menemukan celah materi yang perlu diperkuat. Proses ini jauh lebih efektif daripada sekadar membaca ulang modul dari awal sampai akhir.

Catatan: Soal-soal ini akan terus diperbarui mengikuti modul terbaru Universitas Terbuka.

Soal UT MSIM4202 Struktur Data

1.

Struktur data adalah cara pengorganisasian dan penyimpanan data dalam komputer sehingga data dapat diakses dan dimodifikasi secara efisien. Pernyataan yang paling tepat mengenai tujuan utama struktur data adalah…

  • A. Mempercepat proses kompilasi program
  • B. Mengorganisasi data agar pemrosesan menjadi lebih efisien
  • C. Mengurangi jumlah baris kode program
  • D. Meningkatkan kapasitas memori komputer
Jawaban: B. Mengorganisasi data agar pemrosesan menjadi lebih efisien.
Tujuan utama struktur data adalah mengorganisasi dan menyimpan data sedemikian rupa sehingga operasi pemrosesan data dapat dilakukan secara efisien dalam hal waktu dan ruang memori.
2.

Dalam konsep struktur data, yang dimaksud dengan tipe data abstrak (Abstract Data Type) adalah…

  • A. Model matematika dari tipe data yang mendefinisikan perilaku data tanpa memperhatikan implementasinya
  • B. Tipe data bawaan bahasa pemrograman seperti int dan float
  • C. Cara penyimpanan data dalam memori fisik komputer
  • D. Algoritma pengurutan data dalam struktur tertentu
Jawaban: A. Model matematika dari tipe data yang mendefinisikan perilaku data tanpa memperhatikan implementasinya.
Tipe data abstrak (ADT) merupakan model matematis yang mendefinisikan sekumpulan data beserta operasi-operasinya tanpa memperhatikan detail implementasi konkretnya.
3.

Dalam matematika struktur data, notasi Big-O digunakan untuk…

  • A. Menghitung jumlah variabel dalam suatu program
  • B. Menentukan jumlah memori yang dibutuhkan program
  • C. Menggambarkan batas atas kompleksitas waktu atau ruang suatu algoritma
  • D. Mengukur kecepatan prosesor dalam menjalankan program
Jawaban: C. Menggambarkan batas atas kompleksitas waktu atau ruang suatu algoritma.
Notasi Big-O digunakan dalam analisis algoritma untuk menyatakan batas atas pertumbuhan fungsi kompleksitas waktu atau ruang sehingga dapat dibandingkan efisiensi antar algoritma.
4.

Di dalam bahasa pemrograman Java, blok kode yang digunakan untuk mendefinisikan sekumpulan atribut dan metode yang menjadi cetak biru suatu objek disebut…

  • A. Interface
  • B. Package
  • C. Method
  • D. Class
Jawaban: D. Class.
Dalam Java, class adalah cetak biru (blueprint) yang mendefinisikan atribut (field) dan perilaku (method) dari objek yang akan dibuat berdasarkan class tersebut.
5.

Konsep pewarisan (inheritance) dalam pemrograman berorientasi objek di Java memungkinkan sebuah class untuk…

  • A. Membuat salinan objek secara otomatis ke dalam memori
  • B. Mewarisi atribut dan metode dari class lain yang menjadi induknya
  • C. Mengubah tipe data variabel secara dinamis saat runtime
  • D. Menjalankan beberapa metode secara bersamaan dalam satu waktu
Jawaban: B. Mewarisi atribut dan metode dari class lain yang menjadi induknya.
Pewarisan (inheritance) adalah mekanisme di Java yang memungkinkan subclass (class anak) untuk menggunakan atribut dan metode yang telah didefinisikan pada superclass (class induk).
6.

Tipe data primitif dalam bahasa pemrograman Java yang digunakan untuk menyimpan nilai bilangan bulat dengan ukuran 32 bit adalah…

  • A. int
  • B. long
  • C. short
  • D. byte
Jawaban: A. int.
Tipe data int dalam Java adalah tipe data primitif bilangan bulat berukuran 32 bit, dengan rentang nilai dari -2.147.483.648 hingga 2.147.483.647.
7.

Perhatikan deklarasi berikut: int[] arr = new int[5]; Pernyataan yang benar mengenai array arr tersebut adalah…

  • A. Array arr berisi 5 elemen dengan indeks dari 1 sampai 5
  • B. Array arr tidak dapat diubah nilainya setelah dideklarasikan
  • C. Array arr berisi 5 elemen dengan indeks dari 0 sampai 4
  • D. Array arr dapat menampung tipe data yang berbeda-beda
Jawaban: C. Array arr berisi 5 elemen dengan indeks dari 0 sampai 4.
Dalam Java, indeks array dimulai dari 0, sehingga array dengan ukuran 5 memiliki indeks valid dari 0 hingga 4.
8.

Linked list berbeda dari array dalam hal alokasi memori. Perbedaan utama yang membedakan linked list dari array adalah…

  • A. Linked list hanya dapat menyimpan tipe data numerik
  • B. Array dapat tumbuh secara dinamis sedangkan linked list tidak
  • C. Linked list menggunakan indeks untuk mengakses setiap elemennya
  • D. Linked list mengalokasikan memori secara dinamis menggunakan pointer atau referensi antar node
Jawaban: D. Linked list mengalokasikan memori secara dinamis menggunakan pointer atau referensi antar node.
Linked list menggunakan alokasi memori dinamis di mana setiap node menyimpan data dan referensi ke node berikutnya, sehingga ukurannya dapat berubah sesuai kebutuhan.
9.

Pada struktur linked list, setiap simpul (node) terdiri atas dua bagian utama, yaitu…

  • A. Indeks dan nilai
  • B. Data dan pointer ke node berikutnya
  • C. Kunci dan nilai
  • D. Nama variabel dan tipe data
Jawaban: B. Data dan pointer ke node berikutnya.
Setiap node dalam linked list terdiri atas dua bagian, yaitu field data yang menyimpan nilai dan field pointer (next) yang menyimpan referensi ke node selanjutnya dalam rantai.
10.

Jika sebuah linked list memiliki node dengan field next yang bernilai null, maka node tersebut merupakan…

  • A. Node pertama dalam linked list
  • B. Node yang telah dihapus dari linked list
  • C. Node terakhir dalam linked list
  • D. Node yang menyimpan data kosong
Jawaban: C. Node terakhir dalam linked list.
Dalam linked list, node yang memiliki field next bernilai null menandakan bahwa tidak ada node berikutnya, sehingga node tersebut adalah node terakhir (tail) dari linked list.
11.

Stack adalah struktur data yang mengikuti prinsip LIFO. Kepanjangan dari LIFO dalam konteks stack adalah…

  • A. Last In First Out
  • B. Last Index First Order
  • C. Linked Index Free Order
  • D. Linear Input First Output
Jawaban: A. Last In First Out.
LIFO merupakan akronim dari Last In First Out, yang berarti elemen yang terakhir dimasukkan ke dalam stack akan menjadi elemen pertama yang dikeluarkan.
12.

Operasi push pada stack berfungsi untuk…

  • A. Mengambil dan menghapus elemen teratas dari stack
  • B. Memeriksa apakah stack dalam kondisi kosong
  • C. Membaca nilai elemen teratas tanpa menghapusnya
  • D. Menambahkan elemen baru ke posisi teratas stack
Jawaban: D. Menambahkan elemen baru ke posisi teratas stack.
Operasi push digunakan untuk memasukkan elemen baru ke bagian atas (top) stack sesuai dengan prinsip LIFO yang berlaku pada struktur data stack.
13.

Kondisi stack overflow terjadi ketika…

  • A. Operasi pop dilakukan pada stack yang kosong
  • B. Operasi push dilakukan saat stack sudah penuh
  • C. Elemen dengan nilai terbesar dimasukkan ke dalam stack
  • D. Stack diinisialisasi tanpa menentukan ukurannya
Jawaban: B. Operasi push dilakukan saat stack sudah penuh.
Stack overflow adalah kondisi kesalahan yang terjadi ketika operasi push mencoba menambahkan elemen baru ke dalam stack yang telah mencapai kapasitas maksimumnya.
14.

Implementasi stack menggunakan array memiliki keunggulan dibandingkan menggunakan linked list, yaitu…

  • A. Ukuran stack dapat bertambah secara dinamis sesuai kebutuhan
  • B. Operasi push dan pop lebih lambat namun lebih aman
  • C. Akses elemen lebih cepat karena lokasi memori berurutan
  • D. Tidak memerlukan pengecekan kondisi overflow dan underflow
Jawaban: C. Akses elemen lebih cepat karena lokasi memori berurutan.
Implementasi stack dengan array memanfaatkan memori yang berurutan (contiguous), sehingga akses elemen dapat dilakukan lebih cepat dibandingkan linked list yang menggunakan pointer dan memori yang tersebar.
15.

Dalam implementasi stack menggunakan Java, variabel yang digunakan untuk melacak posisi elemen teratas stack disebut…

  • A. top
  • B. head
  • C. front
  • D. index
Jawaban: A. top.
Variabel top digunakan dalam implementasi stack untuk menyimpan indeks atau referensi ke elemen yang berada di posisi teratas tumpukan, sehingga operasi push dan pop dapat dilakukan dengan tepat.
16.

Queue adalah struktur data yang mengikuti prinsip FIFO. Dalam antrian pelanggan di bank, urutan pelayanan yang sesuai prinsip FIFO adalah…

  • A. Pelanggan terakhir datang dilayani lebih dahulu dari pelanggan lainnya
  • B. Pelanggan dengan nomor antrian terkecil selalu dilayani terakhir
  • C. Pelanggan dilayani secara acak tanpa memperhatikan urutan kedatangan
  • D. Pelanggan yang pertama datang akan dilayani pertama kali
Jawaban: D. Pelanggan yang pertama datang akan dilayani pertama kali.
Prinsip FIFO (First In First Out) pada queue menyatakan bahwa elemen yang pertama masuk akan pertama kali keluar, sama seperti antrian di mana yang datang lebih awal dilayani lebih dahulu.
17.

Pada struktur data queue, operasi untuk menambahkan elemen baru ke dalam antrian disebut…

  • A. pop
  • B. enqueue
  • C. push
  • D. insert
Jawaban: B. enqueue.
Operasi enqueue adalah operasi standar pada queue yang digunakan untuk menambahkan elemen baru ke bagian belakang (rear) dari antrian sesuai prinsip FIFO.
18.

Dalam implementasi queue menggunakan array, masalah yang sering terjadi ketika operasi enqueue dan dequeue dilakukan berulang kali adalah…

  • A. Elemen di posisi depan tidak dapat diakses
  • B. Operasi dequeue membutuhkan waktu yang sangat lama
  • C. Ruang di awal array menjadi tidak terpakai meskipun queue belum penuh
  • D. Indeks front dan rear tidak dapat diperbarui secara otomatis
Jawaban: C. Ruang di awal array menjadi tidak terpakai meskipun queue belum penuh.
Ketika dequeue dilakukan, indeks front bergerak maju dan meninggalkan ruang kosong di awal array yang tidak dapat digunakan lagi, sehingga memunculkan masalah pemborosan memori dalam implementasi linear queue.
19.

Circular queue (antrian melingkar) dikembangkan untuk mengatasi kelemahan queue linear berbasis array. Cara kerja circular queue dalam menggunakan ruang memori adalah…

  • A. Posisi rear kembali ke indeks 0 setelah mencapai ujung array sehingga ruang kosong dapat digunakan kembali
  • B. Array secara otomatis diperbesar dua kali lipat ketika kapasitas penuh
  • C. Setiap operasi dequeue memindahkan semua elemen ke posisi awal array
  • D. Elemen disimpan dalam dua array terpisah yang saling bergantian
Jawaban: A. Posisi rear kembali ke indeks 0 setelah mencapai ujung array sehingga ruang kosong dapat digunakan kembali.
Circular queue menggunakan teknik modulo agar indeks rear melingkar kembali ke awal array, sehingga ruang yang telah dikosongkan oleh operasi dequeue dapat dimanfaatkan kembali oleh operasi enqueue berikutnya.
20.

Seorang programmer mengimplementasikan queue menggunakan Java dengan memanfaatkan kelas LinkedList. Alasan utama penggunaan LinkedList untuk implementasi queue adalah…

  • A. LinkedList menggunakan memori yang lebih kecil dibandingkan array
  • B. LinkedList secara default menerapkan prinsip LIFO
  • C. LinkedList tidak mendukung operasi penambahan elemen di posisi tengah
  • D. LinkedList mendukung penambahan di belakang dan penghapusan di depan secara efisien
Jawaban: D. LinkedList mendukung penambahan di belakang dan penghapusan di depan secara efisien.
LinkedList di Java mendukung operasi addLast untuk enqueue dan removeFirst untuk dequeue dengan kompleksitas O(1), menjadikannya pilihan efisien untuk mengimplementasikan queue.
21.

Algoritma sorting yang bekerja dengan cara membagi larik menjadi dua bagian secara rekursif, kemudian menggabungkan kembali bagian-bagian tersebut dalam urutan yang benar disebut…

  • A. Bubble Sort
  • B. Merge Sort
  • C. Selection Sort
  • D. Insertion Sort
Jawaban: B. Merge Sort.
Merge Sort adalah algoritma pengurutan berbasis strategi divide and conquer yang membagi larik secara rekursif menjadi dua bagian hingga setiap bagian berisi satu elemen, lalu menggabungkannya kembali secara terurut.
22.

Kompleksitas waktu rata-rata (average case) dari algoritma Merge Sort adalah…

  • A. O(n)
  • B. O(n2)
  • C. O(n log n)
  • D. O(log n)
Jawaban: C. O(n log n).
Merge Sort memiliki kompleksitas waktu O(n log n) untuk semua kasus (terbaik, rata-rata, dan terburuk) karena proses pembagian membutuhkan O(log n) level rekursi dan setiap level memerlukan O(n) operasi penggabungan.
23.

Counting Sort adalah algoritma pengurutan yang berbeda dari algoritma berbasis perbandingan. Keunggulan utama Counting Sort dibandingkan algoritma berbasis perbandingan adalah…

  • A. Dapat bekerja dalam kompleksitas O(n) jika rentang nilai data diketahui dan terbatas
  • B. Dapat mengurutkan semua jenis data termasuk string dan objek
  • C. Tidak memerlukan memori tambahan dalam proses pengurutannya
  • D. Dapat mengurutkan data dalam memori tanpa proses pembagian rekursif
Jawaban: A. Dapat bekerja dalam kompleksitas O(n) jika rentang nilai data diketahui dan terbatas.
Counting Sort melampaui batas teoritis O(n log n) untuk algoritma berbasis perbandingan dengan memanfaatkan informasi rentang nilai, sehingga mampu mengurutkan data dalam waktu linear O(n+k) di mana k adalah rentang nilai.
24.

Pada proses Merge Sort, tahap penggabungan (merge) dua sub-larik yang telah terurut dilakukan dengan cara…

  • A. Menyalin semua elemen sub-larik kiri ke dalam larik hasil, kemudian diikuti elemen sub-larik kanan
  • B. Mengurutkan ulang seluruh elemen menggunakan algoritma insertion sort
  • C. Menukar elemen antara kedua sub-larik secara bergantian hingga terurut
  • D. Membandingkan elemen terdepan kedua sub-larik dan memilih yang lebih kecil untuk dimasukkan ke larik hasil
Jawaban: D. Membandingkan elemen terdepan kedua sub-larik dan memilih yang lebih kecil untuk dimasukkan ke larik hasil.
Proses merge membandingkan elemen pertama dari kedua sub-larik yang terurut, menempatkan elemen yang lebih kecil ke larik hasil, dan melanjutkan proses ini hingga semua elemen dari kedua sub-larik masuk ke larik hasil.
25.

Tree (pohon) dalam struktur data didefinisikan sebagai kumpulan node yang saling terhubung. Node yang tidak memiliki node anak disebut…

  • A. Root
  • B. Leaf
  • C. Parent
  • D. Sibling
Jawaban: B. Leaf.
Node leaf (daun) adalah node dalam tree yang tidak memiliki anak (child node), sehingga menjadi titik akhir dari setiap cabang pohon.
26.

Tinggi (height) dari sebuah pohon (tree) didefinisikan sebagai…

  • A. Jumlah total node yang terdapat dalam pohon
  • B. Jumlah anak yang dimiliki oleh node akar
  • C. Panjang jalur terpanjang dari node akar ke node daun
  • D. Jumlah level atau tingkatan yang terdapat dalam pohon dikurangi satu
Jawaban: C. Panjang jalur terpanjang dari node akar ke node daun.
Tinggi pohon (tree height) adalah panjang jalur terpanjang yang diukur dari node akar (root) hingga node daun (leaf) yang paling jauh, dihitung berdasarkan jumlah sisi (edge) yang dilalui.
27.

Binary Tree adalah pohon yang setiap nodenya memiliki paling banyak dua anak. Pada Full Binary Tree, setiap node internal memiliki tepat…

  • A. Dua anak (child node)
  • B. Satu anak (child node)
  • C. Tiga anak (child node)
  • D. Nol atau dua anak (child node)
Jawaban: A. Dua anak (child node).
Full Binary Tree (pohon biner penuh) adalah pohon biner di mana setiap node yang bukan daun (node internal) memiliki tepat dua anak, tidak lebih dan tidak kurang.
28.

Penelusuran pohon biner dengan urutan Inorder menghasilkan kunjungan node dengan urutan…

  • A. Root, Left, Right
  • B. Right, Root, Left
  • C. Left, Right, Root
  • D. Left, Root, Right
Jawaban: D. Left, Root, Right.
Penelusuran Inorder mengunjungi subtree kiri terlebih dahulu, kemudian node root, lalu subtree kanan. Pada Binary Search Tree, Inorder traversal menghasilkan urutan data yang terurut secara menaik.
29.

Binary Search Tree (BST) memiliki aturan penyusunan data. Aturan yang benar dalam BST adalah…

  • A. Nilai node kanan lebih kecil dari nilai node induknya
  • B. Nilai node kiri lebih kecil dan nilai node kanan lebih besar dari nilai node induknya
  • C. Semua nilai di subtree kiri dan kanan harus sama besar
  • D. Nilai terbesar selalu berada di node akar (root)
Jawaban: B. Nilai node kiri lebih kecil dan nilai node kanan lebih besar dari nilai node induknya.
Properti utama BST menyatakan bahwa untuk setiap node, semua nilai di subtree kirinya lebih kecil dan semua nilai di subtree kanannya lebih besar dari nilai node tersebut.
30.

Pada Binary Search Tree dengan n node yang seimbang, kompleksitas waktu untuk operasi pencarian adalah…

  • A. O(n)
  • B. O(n2)
  • C. O(log n)
  • D. O(1)
Jawaban: C. O(log n).
Pada BST yang seimbang, setiap langkah pencarian mengeliminasi setengah dari sisa data, sehingga menghasilkan kompleksitas O(log n), serupa dengan binary search pada array terurut.
31.

Graph dalam struktur data didefinisikan sebagai pasangan himpunan (V, E). Dalam notasi tersebut, E merepresentasikan…

  • A. Himpunan sisi (edge) yang menghubungkan antar simpul
  • B. Himpunan simpul (vertex) dalam graph
  • C. Bobot atau nilai dari setiap simpul
  • D. Jumlah elemen yang terdapat dalam graph
Jawaban: A. Himpunan sisi (edge) yang menghubungkan antar simpul.
Dalam notasi graph G = (V, E), V menyatakan himpunan vertex (simpul) dan E menyatakan himpunan edge (sisi) yang merupakan pasangan vertex yang saling terhubung.
32.

Graph berarah (directed graph) berbeda dari graph tidak berarah (undirected graph). Perbedaan utama keduanya terletak pada…

  • A. Jumlah simpul yang dapat dimiliki oleh graph
  • B. Cara penyimpanan graph dalam memori komputer
  • C. Kemampuan graph untuk menyimpan bobot pada sisinya
  • D. Arah pergerakan yang diperbolehkan pada setiap sisi penghubung
Jawaban: D. Arah pergerakan yang diperbolehkan pada setiap sisi penghubung.
Pada directed graph, setiap sisi memiliki arah tertentu dari satu simpul ke simpul lain, sedangkan pada undirected graph, sisi dapat dilalui dari kedua arah tanpa batasan.
33.

Representasi graph menggunakan adjacency matrix memiliki karakteristik bahwa baris dan kolom mewakili simpul. Nilai 1 pada sel (i, j) dalam adjacency matrix menunjukkan…

  • A. Bobot atau jarak antara simpul i dan simpul j
  • B. Terdapat sisi yang menghubungkan simpul i dengan simpul j
  • C. Simpul i dan simpul j memiliki nilai yang sama
  • D. Simpul i berada di level yang lebih tinggi dari simpul j
Jawaban: B. Terdapat sisi yang menghubungkan simpul i dengan simpul j.
Dalam adjacency matrix, nilai 1 pada posisi (i, j) menandakan bahwa ada sisi (edge) yang menghubungkan simpul i ke simpul j, sedangkan nilai 0 menandakan tidak ada hubungan langsung.
34.

Representasi graph menggunakan adjacency list lebih efisien dari adjacency matrix untuk graph yang jarang (sparse graph). Alasan utama keunggulan adjacency list pada sparse graph adalah…

  • A. Adjacency list memungkinkan akses langsung ke setiap sisi dalam waktu O(1)
  • B. Adjacency list lebih mudah diimplementasikan dalam bahasa Java
  • C. Adjacency list hanya menyimpan sisi yang benar-benar ada sehingga menghemat memori
  • D. Adjacency list menggunakan matriks dua dimensi yang lebih terstruktur
Jawaban: C. Adjacency list hanya menyimpan sisi yang benar-benar ada sehingga menghemat memori.
Pada sparse graph, adjacency matrix boros memori karena harus mengalokasikan n x n ruang meskipun banyak sel bernilai 0, sedangkan adjacency list hanya menyimpan informasi sisi yang benar-benar ada.
35.

Algoritma traversal Depth-First Search (DFS) pada graph menggunakan struktur data pendukung berupa…

  • A. Stack
  • B. Queue
  • C. Array terurut
  • D. Binary Search Tree
Jawaban: A. Stack.
DFS menggunakan stack (baik secara eksplisit maupun melalui rekursi yang memanfaatkan call stack) untuk menelusuri simpul sedalam mungkin sebelum kembali dan menjelajahi cabang lainnya.
36.

Algoritma Breadth-First Search (BFS) pada graph menelusuri simpul-simpul berdasarkan…

  • A. Nilai terbesar simpul yang belum dikunjungi
  • B. Urutan penambahan simpul ke dalam stack
  • C. Kedalaman simpul dari posisi akar yang paling dalam
  • D. Jarak atau tingkat kedekatan simpul terhadap simpul awal
Jawaban: D. Jarak atau tingkat kedekatan simpul terhadap simpul awal.
BFS menelusuri graph secara berlapis, mengunjungi semua simpul tetangga langsung (level 1) dari simpul awal sebelum melanjutkan ke simpul yang lebih jauh (level 2, 3, dst.), dengan bantuan queue untuk antrian kunjungan.
37.

Dalam traversal graph, array visited digunakan untuk mencatat simpul yang sudah dikunjungi. Fungsi utama array visited dalam algoritma DFS dan BFS adalah…

  • A. Menyimpan bobot sisi antara setiap pasangan simpul
  • B. Mencegah simpul yang sama dikunjungi lebih dari satu kali
  • C. Menentukan urutan prioritas simpul yang akan dikunjungi
  • D. Menghitung jumlah total sisi dalam graph
Jawaban: B. Mencegah simpul yang sama dikunjungi lebih dari satu kali.
Array visited digunakan untuk menandai simpul yang telah dikunjungi, sehingga algoritma tidak mengunjungi simpul yang sama berulang kali yang dapat menyebabkan perulangan tak terbatas pada graph yang mengandung siklus.
38.

Searching (pencarian) dalam struktur data bertujuan untuk menemukan elemen tertentu dalam sekumpulan data. Algoritma sequential search (pencarian berurutan) bekerja dengan cara…

  • A. Membagi data menjadi dua bagian dan hanya memeriksa bagian yang relevan
  • B. Menggunakan indeks hash untuk langsung menemukan posisi elemen
  • C. Memeriksa setiap elemen satu per satu dari awal hingga elemen ditemukan atau data habis
  • D. Mengurutkan data terlebih dahulu sebelum melakukan pencarian
Jawaban: C. Memeriksa setiap elemen satu per satu dari awal hingga elemen ditemukan atau data habis.
Sequential search atau linear search menelusuri setiap elemen secara berurutan dari elemen pertama, membandingkannya dengan nilai yang dicari, dan berhenti ketika elemen ditemukan atau seluruh data telah diperiksa.
39.

Binary search hanya dapat diterapkan pada data yang telah terurut. Mengapa data harus terurut untuk menerapkan binary search?

  • A. Karena binary search membutuhkan kemampuan untuk menentukan apakah nilai yang dicari berada di separuh kiri atau kanan dari titik tengah
  • B. Karena binary search menggunakan rekursi yang hanya bekerja pada data terurut
  • C. Karena binary search memerlukan indeks array yang berurutan secara alfabetis
  • D. Karena data yang tidak terurut tidak dapat disimpan dalam array
Jawaban: A. Karena binary search membutuhkan kemampuan untuk menentukan apakah nilai yang dicari berada di separuh kiri atau kanan dari titik tengah.
Prinsip kerja binary search adalah membandingkan nilai tengah dengan target untuk memutuskan apakah pencarian dilanjutkan di sisi kiri atau kanan, yang hanya valid jika data telah terurut sehingga posisi relatif nilai bermakna.
40.

Algoritma DFS pada graph dapat diimplementasikan secara rekursif. Keunggulan implementasi DFS secara rekursif dibandingkan iteratif adalah…

  • A. Implementasi rekursif selalu lebih cepat dalam hal kompleksitas waktu
  • B. Implementasi rekursif tidak memerlukan pengecekan simpul yang sudah dikunjungi
  • C. Implementasi rekursif dapat menangani graph dengan siklus tanpa modifikasi apapun
  • D. Kode implementasi rekursif lebih sederhana dan mudah dipahami karena memanfaatkan call stack secara implisit
Jawaban: D. Kode implementasi rekursif lebih sederhana dan mudah dipahami karena memanfaatkan call stack secara implisit.
DFS rekursif memanfaatkan call stack sistem secara otomatis tanpa perlu mengelola stack secara eksplisit, sehingga kodenya lebih ringkas dan lebih mudah ditulis maupun dibaca oleh programmer.
41.

Seorang programmer sedang membandingkan kinerja DFS dan BFS untuk menemukan jalur terpendek dalam graph tidak berbobot. Algoritma yang tepat digunakan adalah…

  • A. DFS karena menelusuri hingga kedalaman maksimum sebelum kembali
  • B. DFS karena lebih efisien dalam penggunaan memori untuk graph yang besar
  • C. BFS karena menjamin ditemukannya jalur dengan jumlah sisi paling sedikit
  • D. BFS karena dapat menangani graph dengan bobot negatif secara langsung
Jawaban: C. BFS karena menjamin ditemukannya jalur dengan jumlah sisi paling sedikit.
BFS menjelajahi graph secara berlapis sehingga simpul tujuan yang pertama kali ditemukan pasti dicapai melalui jalur dengan jumlah sisi paling sedikit, menjadikannya optimal untuk pencarian jalur terpendek pada graph tidak berbobot.
42.

Perhatikan operasi berikut pada queue: enqueue(5), enqueue(3), enqueue(7), dequeue(), enqueue(1). Setelah semua operasi dijalankan, elemen yang berada di posisi paling depan (front) queue adalah…

  • A. 5
  • B. 3
  • C. 7
  • D. 1
Jawaban: B. 3.
Setelah enqueue(5), enqueue(3), enqueue(7), queue berisi [5, 3, 7]. Operasi dequeue() menghapus elemen terdepan yaitu 5, sehingga queue menjadi [3, 7]. Setelah enqueue(1), queue menjadi [3, 7, 1] dengan elemen front adalah 3.
43.

Perhatikan operasi berikut pada stack: push(10), push(20), pop(), push(30), peek(). Nilai yang dikembalikan oleh operasi peek() adalah…

  • A. 30
  • B. 20
  • C. 10
  • D. 0
Jawaban: A. 30.
Setelah push(10) dan push(20), stack berisi [10, 20]. Operasi pop() menghapus 20, sehingga stack menjadi [10]. Setelah push(30), stack menjadi [10, 30]. Operasi peek() membaca elemen teratas tanpa menghapusnya, yaitu 30.
44.

Sebuah array dua dimensi dalam Java dideklarasikan sebagai int[][] matrix = new int[3][4]. Pernyataan yang benar tentang array tersebut adalah…

  • A. Array memiliki 3 kolom dan 4 baris
  • B. Elemen diakses menggunakan satu indeks saja
  • C. Indeks baris valid adalah dari 1 sampai 3
  • D. Array memiliki 3 baris dan 4 kolom dengan total 12 elemen
Jawaban: D. Array memiliki 3 baris dan 4 kolom dengan total 12 elemen.
Deklarasi int[3][4] mendefinisikan array dua dimensi dengan 3 baris (indeks 0-2) dan 4 kolom (indeks 0-3), sehingga total elemen yang dapat disimpan adalah 3 x 4 = 12 elemen.
45.

Dalam Binary Search Tree, jika sebuah node yang akan dihapus memiliki dua anak, maka node penggantinya adalah…

  • A. Node akar (root) dari seluruh pohon
  • B. Node terkecil di subtree kanan atau node terbesar di subtree kiri
  • C. Node anak kiri dari node yang dihapus
  • D. Node anak kanan dari node yang dihapus
Jawaban: B. Node terkecil di subtree kanan atau node terbesar di subtree kiri.
Ketika node dengan dua anak dihapus dari BST, penggantinya adalah in-order successor (node terkecil di subtree kanan) atau in-order predecessor (node terbesar di subtree kiri) untuk menjaga properti BST tetap valid.
46.

Jika dilakukan penelusuran Postorder pada pohon biner dengan struktur: root = A, anak kiri A = B, anak kanan A = C, anak kiri B = D, anak kanan B = E, urutan kunjungan yang benar adalah…

  • A. A, B, D, E, C
  • B. D, B, E, A, C
  • C. D, E, B, C, A
  • D. A, B, C, D, E
Jawaban: C. D, E, B, C, A.
Postorder traversal mengunjungi Left, Right, Root. Dimulai dari subtree kiri B: kunjungi D (daun), kunjungi E (daun), kunjungi B. Kemudian subtree kanan A: kunjungi C (daun). Terakhir kunjungi root A. Hasilnya: D, E, B, C, A.
47.

Analisis perbandingan antara DFS dan BFS menunjukkan perbedaan dalam kebutuhan memori. Pada graph yang sangat lebar (banyak tetangga di setiap simpul), DFS lebih hemat memori karena…

  • A. DFS hanya menyimpan satu jalur dari root ke simpul yang sedang dikunjungi, bukan semua simpul di satu level
  • B. DFS tidak memerlukan struktur data tambahan untuk menyimpan simpul yang dikunjungi
  • C. DFS menggunakan queue yang lebih kecil dibandingkan stack yang digunakan BFS
  • D. DFS mengunjungi lebih sedikit simpul dibandingkan BFS pada graph yang sama
Jawaban: A. DFS hanya menyimpan satu jalur dari root ke simpul yang sedang dikunjungi, bukan semua simpul di satu level.
DFS menyimpan simpul hanya sepanjang jalur yang sedang ditelusuri (kedalaman pohon), sedangkan BFS menyimpan semua simpul di level saat ini yang dapat sangat banyak pada graph dengan banyak tetangga (graph lebar).
48.

Dalam konteks double linked list, setiap node memiliki dua pointer yaitu next dan prev. Keunggulan utama double linked list dibandingkan single linked list adalah…

  • A. Double linked list menggunakan lebih sedikit memori karena menyimpan dua pointer
  • B. Double linked list hanya dapat ditelusuri dari depan ke belakang
  • C. Double linked list memiliki operasi insert yang lebih lambat dari single linked list
  • D. Double linked list dapat ditelusuri dari kedua arah sehingga penghapusan node lebih mudah dilakukan
Jawaban: D. Double linked list dapat ditelusuri dari kedua arah sehingga penghapusan node lebih mudah dilakukan.
Pointer prev pada double linked list memungkinkan penelusuran ke arah sebelumnya, sehingga operasi seperti penghapusan node di tengah tidak memerlukan penelusuran dari awal untuk menemukan node pendahulunya.
49.

Seorang mahasiswa diminta menganalisis efisiensi dua algoritma pencarian: sequential search dengan O(n) dan binary search dengan O(log n). Pada kondisi manakah sequential search lebih disarankan digunakan?

  • A. Ketika data berjumlah sangat besar dan sudah terurut
  • B. Ketika kecepatan pencarian menjadi prioritas utama sistem
  • C. Ketika data tidak terurut atau jumlah data sangat kecil sehingga biaya pengurutan tidak sebanding
  • D. Ketika data disimpan dalam Binary Search Tree yang seimbang
Jawaban: C. Ketika data tidak terurut atau jumlah data sangat kecil sehingga biaya pengurutan tidak sebanding.
Sequential search tidak memerlukan data terurut dan tidak memerlukan overhead pengurutan, sehingga lebih praktis digunakan pada data yang belum terurut atau pada dataset kecil di mana biaya pengurutan lebih mahal dari manfaat binary search.
50.

Sebuah program Java menggunakan stack untuk mengevaluasi ekspresi matematika yang dikonversi ke notasi postfix. Ekspresi postfix “3 4 + 2 *” dieksekusi menggunakan stack. Hasil akhir yang benar adalah…

  • A. 10
  • B. 14
  • C. 11
  • D. 24
Jawaban: B. 14.
Evaluasi postfix “3 4 + 2 *”: push 3, push 4, operasi + menghasilkan 3+4=7 (push 7), push 2, operasi * menghasilkan 7*2=14. Hasil akhir adalah 14, yang setara dengan ekspresi infix (3+4)*2.

Ada Ujian Tatap Muka atau UTM yang dilakukan langsung di lokasi ujian, ada Ujian Online yang dikenal sebagai UO dan bisa dikerjakan dari mana saja, serta Take Home Exam atau THE. Masing-masing punya karakteristik berbeda, dan latihan Soal UO UT maupun soal format lainnya secara rutin adalah cara paling cerdas untuk beradaptasi dengan ketiganya.

Percayai setiap langkah belajar yang sudah kamu tempuh. Setiap soal yang dikerjakan, setiap konsep yang dipahami, semuanya membangun fondasi yang solid. Semoga persiapanmu menghadapi Soal UAS UT MSIM4202 Struktur Data berbuah nilai yang membanggakan.

Bagikan

error: Content is protected !!