Struktur data: latihan soal dengan penjelasan

Latihan soal pilihan ganda Struktur data gratis dengan petunjuk dan penjelasan, dalam tiga tingkat: istilah dan fakta kunci, menerapkan konsep, kasus dan analisis.

Soal latihan gratisMudah

Apa yang dimaksud dengan sifat max-heap?

Soal berikutnya →
Berlatih Struktur data secara gratisBerlatih Struktur data sekarang5 soal gratis setiap hari. Tanpa kartu kredit.

Yang Anda latih

  1. Mudahistilah dan fakta kunci
  2. Sedangmenerapkan konsep
  3. Sulitkasus dan analisis

Pelajari Struktur data dari nol

Sebelum ini: Algoritma & kompleksitas

1Apa itu struktur data

Struktur data adalah cara mengatur data di memori agar operasi tertentu cepat: mencari item, menambah, menghapus.

Tidak ada struktur yang cepat untuk segalanya. Memilih satu berarti memilih operasi mana yang harus murah. Biayanya ditulis dalam Big O, dengan n jumlah item.

Dua blok pembangun dasar adalah larik dan linked list.

a7[0]3[1]9[2]4[3]7394∅h

Larik menyimpan itemnya dalam satu blok memori, berurutan. Komputer dapat menghitung letak item i, sehingga membaca a[i] memerlukan O(1). Menyisipkan di depan berarti menggeser setiap item: O(n).

Linked list menyimpan setiap item dalam sebuah simpul dengan penunjuk ke simpul berikutnya. Penunjuk terakhir adalah null. Menyisipkan di kepala (h) hanya mengubah satu penunjuk: O(1). Tetapi untuk mencapai item i Anda harus mengikuti i penunjuk: O(n).

Linked list ganda juga memiliki penunjuk ke simpul sebelumnya, sehingga Anda dapat berjalan ke dua arah.

Tes mandiri Operasi mana yang O(1) untuk larik tetapi O(n) untuk linked list tunggal?
  1. Membaca item pada indeks i
  2. Menghitung item satu per satu
  3. Mengunjungi setiap item satu kali
  4. Menyisipkan item baru di depan

Jawaban: Membaca item pada indeks i. Larik menghitung alamat item i secara langsung. Linked list harus mengikuti i penunjuk dari kepala. Menyisipkan di depan adalah kasus sebaliknya: murah untuk list, mahal untuk larik.

2Tumpukan dan antrean

Tumpukan (stack) seperti setumpuk piring: Anda menambah dan mengambil hanya di atas. Item terakhir yang masuk adalah yang pertama keluar: LIFO.

  • push meletakkan item di atas, pop mengambil item teratas, peek membaca item teratas tanpa mengambilnya. Semuanya O(1).
  • Kegunaan: fungsi undo pada editor, tumpukan panggilan program, memeriksa keseimbangan tanda kurung, pencarian depth-first.

Antrean (queue) seperti antrean di kasir: Anda bergabung di belakang dan keluar dari depan. Item pertama yang masuk adalah yang pertama keluar: FIFO.

  • enqueue menambah di belakang, dequeue mengambil dari depan. Keduanya O(1).
  • Kegunaan: pekerjaan cetak, pesan yang menunggu ditangani, pencarian breadth-first.

Deque (antrean berujung dua) memungkinkan penambahan dan pengambilan di kedua ujung. Antrean prioritas selalu mengambil item berprioritas tertinggi lebih dulu; biasanya dibangun sebagai heap.

Tes mandiri Struktur data mana yang paling cocok untuk tombol “undo” editor teks?
  1. Sebuah antrean
  2. Sebuah graf
  3. Sebuah tabel hash
  4. Sebuah tumpukan

Jawaban: Sebuah tumpukan. Undo harus membalik tindakan terbaru lebih dulu: masuk terakhir, keluar pertama. Antrean akan membatalkan tindakan tertua lebih dulu.

3Pohon, heap, tabel hash, dan graf

Pohon memiliki satu simpul puncak, yaitu akar. Setiap simpul lain memiliki tepat satu induk. Simpul tanpa anak adalah daun. Pohon dengan n simpul memiliki n − 1 sisi.

Dalam pohon biner setiap simpul memiliki paling banyak dua anak. Pohon pencarian biner (BST) menambahkan aturan: kunci di subpohon kiri lebih kecil dari simpul, kunci di subpohon kanan lebih besar.

Mencari di BST mengikuti satu jalur ke bawah, jadi biayanya O(tinggi). Pohon seimbang (AVL, red-black) menjaga tinggi mendekati log₂ n. Kunci yang disisipkan berurutan membentuk rantai setinggi n.

Heap adalah pohon biner tempat setiap induk lebih kecil dari anak-anaknya (min-heap) atau lebih besar (max-heap). Minimum atau maksimum berada di akar, dan penyisipan serta penghapusan berbiaya O(log n).

Tabel hash menyimpan pasangan kunci–nilai. Sebuah fungsi hash mengubah kunci menjadi indeks, sehingga penyisipan dan pencarian rata-rata O(1). Dua kunci dengan indeks yang sama disebut tabrakan (collision), diatasi dengan chaining (satu list per slot) atau open addressing (mencoba slot lain).

Graf memiliki simpul (vertex) yang dihubungkan oleh sisi, yang dapat memiliki arah atau bobot. Graf disimpan sebagai matriks ketetanggaan, memori O(V²), atau sebagai daftar ketetanggaan, O(V + E).

Tes mandiri Kunci 50, 30, 70, 20, dan 40 disisipkan dengan urutan ini ke pohon pencarian biner kosong. Apa anak kiri dari 30?
  1. 20
  2. 40
  3. 70
  4. Tidak memiliki anak kiri

Jawaban: 20. 20 lebih kecil dari 50, jadi ke kiri menuju 30. Ia juga lebih kecil dari 30, jadi ke kiri lagi. 40 lebih besar dari 30 dan menjadi anak kanannya.

4Metode ini selangkah demi selangkah

Soal sering menggambarkan sebuah tugas dan menanyakan struktur mana yang cocok, atau menanyakan seperti apa struktur setelah beberapa operasi.

  1. Cari operasi yang harus cepat: akses berdasarkan posisi, berdasarkan kunci, item terbaru, item tertua, item terkecil, atau suatu rentang.
  2. Cocokkan dengan struktur: indeks → larik, kunci → tabel hash, terbaru → tumpukan, tertua → antrean, terkecil atau terbesar → heap, urutan terurut atau rentang → pohon pencarian seimbang.
  3. Periksa biaya operasi lain yang diperlukan tugas itu, dalam Big O.
  4. Untuk soal penelusuran, jalankan operasi satu per satu dan tulis keadaan setelah masing-masing.
  5. Periksa keadaan akhir terhadap aturan struktur: LIFO, FIFO, urutan BST, atau urutan heap.

5Contoh soal lengkap

Ikuti setiap langkah. Cobalah menebak langkah berikutnya sebelum membukanya.

Contoh soal

Kunci 50, 30, 70, 20, 40, dan 60 disisipkan dengan urutan ini ke pohon pencarian biner kosong. Apa penelusuran in-order-nya, dan berapa perbandingan yang diperlukan untuk mencari 60?

1

Sisipkan akar

Kunci pertama, 50, menjadi akar.

2

Sisipkan 30 dan 70

30 lebih kecil dari 50, jadi ke kiri. 70 lebih besar dari 50, jadi ke kanan.

503070
3

Sisipkan 20, 40, dan 60

20: lebih kecil dari 50, lebih kecil dari 30, jadi di kiri 30. 40: lebih kecil dari 50, lebih besar dari 30, jadi di kanan 30. 60: lebih besar dari 50, lebih kecil dari 70, jadi di kiri 70.

503070204060
4

Telusuri in-order

Penelusuran in-order mengunjungi subpohon kiri, lalu simpul, lalu subpohon kanan.

Itu menghasilkan 20, 30, 40, 50, 60, 70: kunci dalam urutan terurut, seperti selalu pada BST.

5

Cari 60

Bandingkan dengan 50: lebih besar, ke kanan. Bandingkan dengan 70: lebih kecil, ke kiri. Bandingkan dengan 60: ditemukan.

503070204060

Pencarian memerlukan 3 perbandingan, satu per tingkat.

Jawaban

In-order: 20, 30, 40, 50, 60, 70. Pencarian 60 memerlukan 3 perbandingan.

6Kesalahan umum

  • Mencampuradukkan LIFO dan FIFO. Tumpukan mengembalikan item terbaru, antrean item tertua.
  • Mengira linked list memberi akses cepat berdasarkan indeks. Ia harus berjalan dari kepala.
  • Mengira BST selalu O(log n). Hanya pohon seimbang yang demikian; penyisipan terurut menghasilkan O(n).
  • Melupakan tabrakan pada tabel hash. O(1) adalah rata-rata, bukan kasus terburuk.
  • Mencampuradukkan penelusuran. Preorder: simpul lebih dulu. In-order: simpul di tengah. Postorder: simpul terakhir.
  • Memakai matriks ketetanggaan untuk graf jarang yang besar. Itu memboroskan memori O(V²).
Tes mandiri Anda meng-enqueue 1, 2, dan 3 ke antrean kosong, dengan urutan ini. Item mana yang dikembalikan dequeue pertama?
  1. 1, 2, dan 3 sekaligus
  2. 1
  3. 2
  4. 3

Jawaban: 1. Antrean bersifat masuk pertama, keluar pertama, jadi 1 keluar lebih dulu. 3 adalah jawaban untuk tumpukan (pop), yang mengembalikan item terbaru.

7Seperti apa soal ujiannya

  • Mudah: istilah dan fakta kunci. LIFO dan FIFO, apa itu simpul, akar, atau daun, aturan BST, apa yang dilakukan fungsi hash.
  • Sedang: menerapkan konsep. Struktur mana yang cocok untuk suatu tugas, hasil push dan pop atau penyisipan BST, penelusuran pohon, tabel hash dengan linear probing, biaya dalam Big O.
  • Sulit: kasus dan analisis. Pohon seimbang, heap dalam larik, B-tree, trie, union-find, Bloom filter, dan rancangan seperti LRU cache.

Untuk heap yang disimpan dalam larik dari indeks 0, anak-anak indeks i berada di 2i + 1 dan 2i + 2, dan induknya di ⌊(i − 1) / 2⌋.

Pelajari selangkah demi selangkah di aplikasiPelajari selangkah demi selangkah di aplikasi

Contoh soal

Contoh 1Mudah

Apa perbedaan utama antara array statis dan dynamic array?

  1. AArray statis memiliki akses indeks yang lebih lambat
  2. BDynamic array dapat membesar dengan pindah ke blok memori yang lebih besar
  3. CDynamic array menyimpan elemennya dalam node yang saling terhubung sehingga dapat membesar satu per satu
  4. DArray statis hanya dapat menyimpan bilangan
Tampilkan petunjuk
  1. List Python dan ArrayList Java adalah contoh salah satunya.
  2. Dua jawaban salah kini dicoret. Salah satu dari dua yang tersisa benar.
Tampilkan jawaban dan penjelasan

Mengapa ini jawabannya

Array statis berukuran tetap; dynamic array mengalokasikan array yang lebih besar dan menyalin elemen ketika penuh.

Jawaban

B · Dynamic array dapat membesar dengan pindah ke blok memori yang lebih besar
Contoh 2Sedang

Bagaimana cara kerja extract-min pada binary min-heap?

  1. AHapus elemen terakhir array
  2. BPindahkan elemen terakhir ke root dan geser ke bawah (sift down)
  3. CHapus root dan geser semua elemen satu tempat ke kiri
  4. DCari minimum baru di semua daun
Tampilkan petunjuk
  1. Jaga pohon tetap lengkap, lalu perbaiki urutannya.
  2. Dua jawaban salah kini dicoret. Salah satu dari dua yang tersisa benar.
Tampilkan jawaban dan penjelasan

Mengapa ini jawabannya

Elemen terakhir mengisi lubang di root dan ditukar dengan anak yang lebih kecil sampai sifat heap terpenuhi, dalam O(log n).

Jawaban

B · Pindahkan elemen terakhir ke root dan geser ke bawah (sift down)
Contoh 3Sulit

Tanpa union by rank atau path compression, berapa biaya kasus terburuk satu operasi find dalam struktur union-find dengan n elemen?

  1. AO(1)
  2. BO(α(n))
  3. CO(log n)
  4. DO(n)
Tampilkan petunjuk
  1. Pohonnya dapat merosot (degenerate).
  2. Dua jawaban salah kini dicoret. Salah satu dari dua yang tersisa benar.
Tampilkan jawaban dan penjelasan

Mengapa ini jawabannya

Union naif dapat menyambung pohon menjadi rantai panjang, sehingga find mungkin mengikuti n − 1 pointer induk; kedua heuristik itu membuatnya mendekati konstan.

Jawaban

D · O(n)

Tanya jawab

Apa itu Struktur data?

Tidak ada struktur yang cepat untuk segalanya. Memilih satu berarti memilih operasi mana yang harus murah. Biayanya ditulis dalam Big O, dengan n jumlah item.

Dua blok pembangun dasar adalah larik dan linked list.

Bagaimana cara belajar Struktur data langkah demi langkah?
  1. Apa itu struktur data
  2. Tumpukan dan antrean
  3. Pohon, heap, tabel hash, dan graf
  4. Metode ini selangkah demi selangkah
  5. Contoh soal lengkap
  6. Kesalahan umum
  7. Seperti apa soal ujiannya
Apa saja yang dilatih dalam soal Struktur data?
  • Mudah: istilah dan fakta kunci
  • Sedang: menerapkan konsep
  • Sulit: kasus dan analisis

Setiap soal memiliki empat pilihan, dan hanya satu yang benar. Buntu? Buka petunjuk kecil terlebih dahulu, dan penjelasan lengkap hanya jika Anda membutuhkannya.

Cara kerja latihan

  • Setiap soal memiliki empat pilihan, dan hanya satu yang benar.
  • Buntu? Buka petunjuk kecil terlebih dahulu, dan penjelasan lengkap hanya jika Anda membutuhkannya.
  • Kemajuan, kesalahan, dan soal tersimpan Anda disimpan, sehingga Anda dapat mengulasnya sebelum ujian.

Topik sebelum dan sesudah ini

Pelajari dulu

Mata kuliah dengan topik ini

Topik lain di Ilmu komputer

Lembar kerja yang dapat dicetak

Berlatih Struktur data secara gratisBerlatih Struktur data sekarang5 soal gratis setiap hari. Tanpa kartu kredit.