“Pulang kerja, eh harus belajar tree sama graph? Modul 7 dan 8 itu dua topik yang paling bikin mahasiswa UT mengernyitkan dahi. Padahal struktur datanya logis kok. latihan soal UT di halaman ini sangat membantu untuk melihat perbedaan representasi binary tree dengan adjacency list pada graph. Bedanya tipis tapi krusial, apalagi kalau sudah masuk ke modul traversal.
Soal UAS MSIM4202 Struktur Data biasanya menguji modul awal seperti konsep array dan linked list juga, bukan cuma ujung-ujungnya. Mergesort di modul 6 sering banget diwawancarakan lewat simulasi proses penggabungan data. kumpulan soal UT Akuntansi Keuangan Publik mungkin untuk matkul lain, tapi prinsip latihannya sama: fokus ke detail algoritma. Coba deh kerjakan soal stack dulu sebelum queue.
Soal Ujian UT di bawah ini langsung mengetes pemahamanmu tentang inorder traversal atau implementasi queue dengan array, bukan cuma hafalan definisi. Setiap soal dilengkapi kunci jawaban dan pembahasan, jadi kamu langsung tahu di mana letak kesalahan logika. latihan UAS Universitas Terbuka ini komplet untuk menguji modul 1 sampai modul 9 sekaligus.”
Soal UT MSIM4202 Struktur Data
Apa yang dimaksud dengan struktur data?
Struktur data adalah cara untuk mengorganisir dan menyimpan data sehingga dapat digunakan secara efisien.
Manakah dari berikut yang bukan merupakan jenis struktur data berdasarkan sifatnya?
Struktur data abstrak adalah konsep, bukan jenis berdasarkan sifat. Jenis berdasarkan sifat meliputi linier, non linier, statis, dan dinamis.
Contoh struktur data linier adalah…
Array adalah struktur data linier karena elemennya tersusun secara berurutan. Tree dan graph adalah non linier.
Pemilihan struktur data yang tepat dalam suatu program bertujuan untuk…
Struktur data yang tepat dapat mengoptimalkan penggunaan memori dan waktu eksekusi program.
Dalam konteks struktur data, operasi dasar yang dapat dilakukan pada suatu struktur data adalah…
Operasi dasar meliputi penyisipan, penghapusan, pencarian, dan akses data.
Dalam matematika, notasi Big O digunakan untuk…
Notasi Big O menggambarkan batas atas kompleksitas waktu atau ruang suatu algoritma.
Jika suatu algoritma memiliki kompleksitas O(log n), maka waktu eksekusinya akan…
Kompleksitas O(log n) menunjukkan peningkatan waktu secara logaritmik terhadap ukuran input n.
Perbandingan notasi O(n) dan O(n^2) dalam hal efisiensi adalah…
O(n) lebih efisien karena waktu eksekusi bertambah secara linear, sedangkan O(n^2) bertambah secara kuadratik.
Dalam konteks struktur data, fungsi rekursif adalah fungsi yang…
Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri untuk menyelesaikan masalah.
Jika suatu algoritma memiliki kompleksitas O(2^n), maka algoritma tersebut termasuk dalam kategori…
Kompleksitas O(2^n) adalah eksponensial, sehingga tidak efisien untuk ukuran data yang besar.
Dalam bahasa pemrograman Java, tipe data primitif adalah tipe data yang…
Tipe data primitif adalah tipe bawaan Java seperti int, char, boolean dengan ukuran tetap.
Pernyataan yang benar tentang kelas dan objek dalam Java adalah…
Kelas merupakan cetak biru (blueprint) yang mendefinisikan properti dan perilaku objek.
Konsep enkapsulasi dalam Java berarti…
Enkapsulasi menyembunyikan detail internal kelas dan hanya memberikan akses melalui metode publik.
Dalam Java, keyword 'new' digunakan untuk…
Keyword 'new' digunakan untuk mengalokasikan memori dan membuat objek baru.
Inheritance dalam Java memungkinkan…
Inheritance adalah pewarisan sifat dari kelas induk ke kelas anak.
Tipe data primitif dalam Java yang digunakan untuk menyimpan bilangan bulat adalah…
int adalah tipe data primitif untuk bilangan bulat. float dan double untuk bilangan desimal, char untuk karakter.
Tipe data abstrak (ADT) didefinisikan sebagai…
ADT mendefinisikan operasi yang dapat dilakukan pada data tanpa merinci bagaimana operasi tersebut diimplementasikan.
Tipe data primitif dalam Java yang digunakan untuk menyimpan bilangan bulat adalah…
int adalah tipe data primitif untuk bilangan bulat, sedangkan float dan double untuk bilangan pecahan, char untuk karakter.
Tipe data abstrak (ADT) berbeda dengan tipe data primitif karena ADT…
ADT menyembunyikan detail implementasi, hanya menyediakan operasi yang dapat digunakan, berbeda dengan tipe primitif yang langsung dieksekusi.
Dalam Java, tipe data boolean digunakan untuk menyimpan nilai…
boolean hanya memiliki dua nilai yaitu true dan false, digunakan untuk kondisi logika.
Array dalam Java memiliki indeks yang dimulai dari…
Indeks array di Java selalu dimulai dari 0, sesuai dengan standar bahasa pemrograman C-based.
Deklarasi array int[] angka = new int[5]; akan menghasilkan array dengan jumlah elemen sebanyak…
new int[5] mengalokasikan 5 elemen array dengan indeks 0 sampai 4.
Untuk mengakses elemen ke-3 dari array arr, sintaks yang benar adalah…
Indeks dimulai dari 0, sehingga elemen ke-3 berada di indeks 2.
Array multidimensi dalam Java dapat dideklarasikan dengan cara…
Deklarasi array multidimensi menggunakan dua pasang kurung siku, misalnya int[][] untuk matriks.
Jika array int[] data = {10, 20, 30}; maka nilai data.length adalah…
Atribut length mengembalikan jumlah elemen array, yaitu 3.
Linked list berbeda dengan array karena linked list…
Linked list menggunakan node yang saling terhubung melalui pointer, tidak memerlukan alamat memori berurutan.
Keuntungan utama linked list dibandingkan array adalah…
Linked list memungkinkan penyisipan dan penghapusan elemen tanpa pergeseran, sedangkan array memerlukan pergeseran elemen.
Dalam struktur linked list, node terakhir biasanya memiliki pointer next yang menunjuk ke…
Node terakhir dalam linked list menunjuk ke null untuk menandai akhir dari list.
Operasi yang paling lambat dalam linked list jika dibandingkan dengan array adalah…
Linked list tidak mendukung akses acak, sehingga untuk mencari elemen berdasarkan indeks perlu traversal dari awal.
Jika linked list baru dibuat dengan satu node, maka pointer head dan tail akan menunjuk ke…
Ketika hanya ada satu node, head dan tail sama-sama menunjuk ke node tersebut.
Dalam praktikum tipe data primitif, deklarasi variabel bertipe float di Java adalah…
Literal float harus diakhiri dengan f, karena tanpa f akan dianggap double.
Saat praktikum, untuk menampilkan output ke layar di Java digunakan perintah…
System.out.println() adalah method standar di Java untuk mencetak ke konsol.
Dalam praktikum array, potongan kode int[] arr = new int[3]; arr[0]=1; arr[1]=2; arr[2]=3; kemudian menjumlahkan semua elemen akan menghasilkan…
Jumlah dari 1+2+3 sama dengan 6.
Pada praktikum linked list, jika ingin menambahkan node baru di akhir list, operasi yang dilakukan adalah…
Menambahkan di akhir memerlukan perubahan pointer next node terakhir dan update tail untuk menunjuk node baru.
Dalam praktikum tipe data primitif di Java, jika kita mendeklarasikan variabel dengan tipe data int dan memberinya nilai 100, kemudian melakukan operasi penambahan dengan nilai 50, maka hasil akhir dari variabel tersebut adalah?
Variabel int di Java dapat diubah nilainya, penambahan 100 dengan 50 menghasilkan 150.
Konsep LIFO (Last In First Out) pada stack berarti bahwa elemen yang terakhir dimasukkan akan menjadi elemen yang pertama dikeluarkan. Prinsip ini berlaku pada operasi stack yaitu?
Operasi push untuk memasukkan elemen ke stack, pop untuk mengeluarkan elemen teratas, sesuai prinsip LIFO.
Dalam struktur data stack, fungsi top digunakan untuk?
Fungsi top atau peek mengembalikan nilai elemen teratas tanpa mengubah isi stack.
Pada stack, kondisi ketika tidak ada elemen di dalam stack disebut?
Kondisi empty terjadi ketika stack tidak memiliki elemen, sedangkan underflow adalah kondisi saat pop dilakukan pada stack kosong.
Jika sebuah stack mula-mula kosong, kemudian dilakukan operasi push(5), push(10), push(15), lalu pop(), maka elemen yang tersisa di dalam stack adalah?
Setelah push(5), push(10), push(15), stack berisi 5,10,15 (15 di atas). Pop menghapus 15, sisa 5 dan 10.
Dalam implementasi stack menggunakan array, jika array memiliki kapasitas maksimal dan stack sudah penuh, maka operasi push akan menyebabkan?
Overflow terjadi saat push dilakukan pada stack yang sudah penuh karena kapasitas array terbatas.
Pada stack yang diimplementasikan dengan array, sebuah variabel top digunakan untuk menunjuk indeks elemen teratas. Saat stack kosong, nilai top sebaiknya diatur menjadi?
Nilai top = -1 menandakan stack kosong karena indeks array dimulai dari 0.
Jika stack diimplementasikan dengan array berukuran 5, dan dilakukan push berturut-turut untuk 3 elemen, maka nilai top setelah semua push adalah?
Push pertama membuat top = 0, push kedua top = 1, push ketiga top = 2.
Dalam array yang digunakan sebagai stack, operasi pop akan melakukan akses pada elemen di indeks?
Pop mengakses elemen pada indeks top, kemudian nilai top dikurangi satu.
Jika stack dengan array berkapasitas 4 berisi elemen pada indeks 0,1,2, maka kapasitas yang tersisa untuk push berikutnya adalah?
Dari 4 kapasitas, sudah terisi 3 elemen, sisa 1 slot untuk push.
Dalam bahasa Java, untuk membuat objek stack dengan menggunakan kelas Stack dari java.util, perintah impor yang tepat adalah?
Kelas Stack berada dalam paket java.util, sehingga perintah import yang tepat adalah java.util.Stack.
Metode dalam kelas Stack Java yang digunakan untuk menambahkan elemen ke dalam stack adalah?
Kelas Stack Java memiliki metode push() untuk menambahkan elemen ke atas stack.
Jika kita memiliki objek Stack di Java bernama tumpukan, maka untuk mengambil elemen teratas tanpa menghapusnya, perintah yang benar adalah?
Metode peek() pada Stack Java mengembalikan elemen teratas tanpa menghapusnya.
Dalam implementasi stack di Java, jika kita memanggil metode pop() pada stack yang kosong, maka akan terjadi?
Pop pada stack kosong akan melempar EmptyStackException sesuai dengan dokumentasi Java.
Kelas Stack di Java merupakan turunan dari kelas?
Kelas Stack di Java merupakan subclass dari Vector, yang juga turunan dari List.
Queue dalam struktur data menggunakan prinsip FIFO, yang berarti?
FIFO adalah singkatan dari First In First Out, di mana elemen yang pertama masuk akan keluar lebih dulu.
Operasi memasukkan elemen ke dalam queue disebut dengan?
Enqueue adalah istilah untuk menambahkan elemen ke bagian belakang queue, sesuai dengan konsep antrian.
Dalam struktur data queue, prinsip operasi yang digunakan adalah?
Queue menggunakan prinsip FIFO, di mana elemen pertama yang masuk akan menjadi elemen pertama yang keluar.
Jika queue diumpamakan antrian di loket, operasi yang dilakukan saat memasukkan elemen baru disebut?
Enqueue adalah operasi untuk menambahkan elemen ke bagian belakang queue, analog dengan seseorang yang masuk ke antrian.
Operasi yang menghapus elemen dari queue disebut?
Dequeue adalah operasi untuk menghapus elemen dari bagian depan queue, sesuai dengan elemen yang keluar dari antrian.
Kondisi ketika queue tidak memiliki elemen sama sekali disebut?
Queue disebut empty ketika tidak ada elemen di dalamnya, berbeda dengan overflow yang terjadi ketika queue penuh.
Jika queue diimplementasikan dengan array dan memiliki ukuran tetap, kondisi ketika queue sudah penuh disebut?
Overflow terjadi ketika queue berbasis array sudah mencapai kapasitas maksimum dan tidak dapat menampung elemen baru.
Dalam implementasi queue dengan array, penunjuk yang menandai posisi elemen terdepan biasanya disebut?
Front adalah variabel yang menunjukkan indeks elemen paling depan dalam queue array, tempat elemen akan dihapus.
Dalam queue berbasis array, variabel yang menandai posisi untuk menambahkan elemen baru adalah?
Rear adalah indeks tempat elemen baru ditambahkan dalam queue array, sehingga operasi enqueue dilakukan di posisi rear.
Jika queue array memiliki front = 2 dan rear = 5, maka banyak elemen yang ada di queue adalah (dengan asumsi array tidak melingkar)?
Jumlah elemen = rear – front = 5 – 2 = 3, tetapi karena indeks front dan rear menunjukkan posisi, maka terdapat 4 elemen (indeks 2,3,4,5).
Untuk mengatasi masalah pemborosan ruang pada queue array biasa, biasanya digunakan konsep?
Queue circular memanfaatkan array secara melingkar sehingga ruang yang sudah di-dequeue dapat digunakan kembali, mengurangi pemborosan.
Dalam Java, implementasi queue dapat menggunakan interface?
Java menyediakan interface Queue yang merupakan bagian dari Java Collections Framework, memiliki method seperti offer, poll, dan peek.
Method dalam Java yang digunakan untuk menambahkan elemen ke queue tanpa melempar exception saat queue penuh adalah?
Method offer() digunakan untuk menambahkan elemen dan mengembalikan false jika queue penuh, berbeda dengan add() yang melempar exception.
Method yang digunakan untuk mengambil dan menghapus elemen depan queue di Java, dan mengembalikan null jika queue kosong adalah?
Poll() mengambil dan menghapus elemen depan, mengembalikan null jika queue kosong, sedangkan remove() melempar exception.
Class Java yang mengimplementasikan queue dengan struktur linked list adalah?
LinkedList di Java mengimplementasikan antarmuka Queue, sehingga dapat digunakan sebagai queue dengan operasi FIFO.
Jika queue Java menggunakan LinkedList, maka method untuk melihat elemen depan tanpa menghapusnya dan melempar exception jika kosong adalah?
Element() mirip dengan peek() tetapi melempar NoSuchElementException jika queue kosong, sedangkan peek() mengembalikan null.
Sorting adalah proses mengatur data dalam urutan tertentu. Algoritma sorting yang membagi array menjadi dua bagian dan menggabungkannya kembali disebut?
Merge sort menggunakan metode divide and conquer dengan membagi array menjadi subarray kecil lalu menggabungkannya secara terurut.
Algoritma sorting yang bekerja dengan menghitung frekuensi kemunculan nilai dan menghasilkan array terurut berdasarkan frekuensi adalah?
Counting sort menghitung jumlah kemunculan setiap nilai, lalu menyusun ulang array berdasarkan frekuensi tersebut tanpa perbandingan.
Pada algoritma merge sort, kompleksitas waktu untuk kasus terbaik, rata-rata, dan terburuk adalah?
Merge sort memiliki kompleksitas O(n log n) pada semua kasus karena selalu membagi array menjadi dua dan menggabungkannya secara linear.
Algoritma sorting yang membagi data menjadi dua bagian yang sama, kemudian mengurutkan masing-masing bagian secara rekursif, lalu menggabungkannya kembali, dikenal dengan nama apa?
Merge sort bekerja dengan membagi data, mengurutkan setiap bagian secara rekursif, dan menggabungkannya.
Salah satu kelemahan utama algoritma bubble sort adalah memiliki kompleksitas waktu kasus terburuk sebesar:
Bubble sort memiliki kompleksitas O(n^2) pada kasus terburuk, karena memerlukan perbandingan berulang.
Dalam struktur data tree, simpul yang memiliki cabang disebut sebagai:
Node internal adalah simpul yang memiliki setidaknya satu anak, berlawanan dengan daun yang tidak memiliki anak.
Tree yang setiap simpulnya hanya memiliki maksimal satu orang tua disebut sebagai:
Tree murni adalah tree yang setiap simpulnya tepat memiliki satu orang tua kecuali akar.
Tingkat (level) dari suatu simpul dalam tree diukur berdasarkan jarak dari simpul tersebut ke:
Level simpul adalah jarak dari akar, dengan akar berada pada level 0.
Jika suatu tree memiliki tinggi 3, maka jumlah maksimum level yang mungkin adalah:
Tinggi 3 berarti ada level 0, 1, 2, 3, sehingga maksimum 4 level.
Yang dimaksud dengan subtree dalam tree adalah:
Subtree adalah bagian tree yang mencakup suatu simpul dan semua keturunannya, dan tetap memenuhi sifat tree.
Dalam binary tree, setiap simpul maksimal memiliki jumlah anak sebanyak:
Binary tree membatasi setiap simpul memiliki maksimal dua anak, yaitu kiri dan kanan.
Pada binary tree, jika suatu simpul tidak memiliki anak kanan, maka pointer right dari simpul tersebut berisi:
Dalam representasi binary tree, jika tidak ada anak kanan, pointer right diisi null.
Traversal inorder pada binary tree menghasilkan urutan:
Inorder mengunjungi subtree kiri terlebih dahulu, kemudian akar, lalu subtree kanan.
Binary tree yang setiap levelnya terisi penuh kecuali mungkin level terakhir disebut:
Complete binary tree memenuhi semua level terisi penuh kecuali level terakhir yang diisi dari kiri.
Jika suatu binary tree memiliki tinggi 4, maka jumlah maksimum simpul yang mungkin adalah:
Jumlah maksimum simpul binary tree dengan tinggi h adalah 2^(h+1) – 1, untuk h=4 hasilnya 31.
Sifat utama dari binary search tree adalah bahwa semua nilai di subtree kiri suatu simpul:
Dalam BST, subtree kiri berisi nilai yang lebih kecil dari simpul induk.
Untuk mencari nilai 25 dalam BST, jika nilai akar adalah 30, maka langkah selanjutnya adalah:
Karena 25 < 30, pencarian dilanjutkan ke subtree kiri.
Penghapusan simpul daun dalam BST dilakukan dengan:
Simpul daun tidak memiliki anak, sehingga cukup dengan mengatur pointer induk menjadi null.
Kompleksitas waktu pencarian rata-rata pada BST yang seimbang adalah:
Pada BST yang seimbang, tinggi tree sekitar log n, sehingga pencarian berjalan O(log n).
Apa yang dimaksud dengan graph dalam struktur data?
Graph adalah struktur data yang terdiri dari simpul dan sisi yang menghubungkan simpul-simpul tersebut.
Dalam graph, istilah 'edge' mengacu pada:
Edge adalah sisi yang menghubungkan dua simpul dalam graph, merepresentasikan hubungan antar simpul.
Graph yang memiliki sisi berarah disebut:
Directed graph atau graph berarah memiliki sisi yang memiliki arah tertentu dari satu simpul ke simpul lain.
Manakah yang termasuk contoh graph dalam kehidupan sehari-hari?
Peta jalan antar kota dapat direpresentasikan sebagai graph dengan kota sebagai simpul dan jalan sebagai sisi.
Representasi graph menggunakan matriks dua dimensi disebut:
Adjacency matrix adalah representasi graph dengan matriks dua dimensi yang menunjukkan hubungan antar simpul.
Dalam adjacency matrix untuk graph dengan n simpul, ukuran matriks adalah:
Adjacency matrix berukuran n x n, di mana n adalah jumlah simpul dalam graph.
Representasi graph yang menggunakan daftar tetangga untuk setiap simpul disebut:
Adjacency list menyimpan daftar simpul yang terhubung langsung untuk setiap simpul, efisien untuk graph jarang.
Keuntungan adjacency matrix dibandingkan adjacency list adalah:
Adjacency matrix memungkinkan pengecekan apakah ada sisi antara dua simpul dalam waktu O(1) konstan.
Algoritma traversal graph yang menggunakan struktur data stack adalah:
DFS menggunakan stack (baik eksplisit maupun rekursif) untuk menjelajahi graph secara mendalam.
Breadth-First Search (BFS) menggunakan struktur data:
BFS menggunakan queue untuk menjelajahi graph secara melebar, mengunjungi simpul berdasarkan jarak dari awal.
Jika graph memiliki siklus, traversal DFS dapat menyebabkan:
Tanpa penanganan simpul yang sudah dikunjungi, DFS bisa terjebak dalam siklus dan berulang terus menerus.
Dalam DFS, simpul yang belum dikunjungi akan ditandai sebagai:
Simpul yang belum dikunjungi dalam DFS disebut unvisited, dan akan dikunjungi saat algoritma berjalan.
Apa yang dimaksud dengan searching dalam struktur data?
Searching adalah proses pencarian elemen yang diinginkan dalam struktur data, seperti array atau graph.
Algoritma searching yang memeriksa elemen satu per satu secara berurutan disebut:
Linear search adalah metode pencarian sederhana yang memeriksa setiap elemen secara berurutan hingga ditemukan.
Binary search memerlukan data yang sudah dalam keadaan:
Binary search bekerja dengan membagi data menjadi dua bagian, sehingga data harus sudah terurut terlebih dahulu.
Kompleksitas waktu rata-rata linear search adalah:
Linear search memiliki kompleksitas O(n) karena memeriksa setiap elemen hingga ditemukan atau habis.
Struktur data punya satu ciri khas di Soal UT: bagian array dan linked list sering muncul dalam satu soal yang sama. Kamu harus benar-benar paham beda akses memori keduanya, apalagi kalau disuruh menganalisis kompleksitas algoritma. Itu yang paling sering bikin mahasiswa mikir ulang. Kalau masih kurang yakin dengan jawabanmu, coba bandingkan dengan pembahasan dari soal ujian UT yang udah tersedia.
Untuk MSIM4202 Struktur Data, bagian tree dan graph biasanya muncul sebagai soal UTM yang teori, tapi traversal-nya sering jadi soal UO yang nalar. Soal UAS UT kadang mencampur binary search tree dengan queue, jadi kamu harus bisa lihat pola hubungan antar modul. Fokus aja pada bagian yang masih bikin kamu berhenti, sisanya tinggal latihan rutin. Kalau udah paham pola soal, sisa waktu bisa kamu pakai cek ulang jawaban.




