Struktur data: soalan latihan dengan penerangan

Soalan latihan aneka pilihan Struktur data percuma dengan petunjuk dan penerangan, pada tiga tahap: istilah dan fakta utama, menggunakan konsep, kes dan analisis.

Soalan latihan percumaMudah

Apakah sifat timbunan maks?

Soalan seterusnya →
Berlatih Struktur data secara percumaBerlatih Struktur data sekarang5 soalan percuma setiap hari. Tiada kad diperlukan.

Apa yang anda latih

  1. Mudahistilah dan fakta utama
  2. Sederhanamenggunakan konsep
  3. Sukarkes dan analisis

Pelajari Struktur data dari awal

Sebelum ini: Algoritma & kerumitan

1Apakah struktur data

Struktur data ialah cara menyusun data dalam memori supaya operasi tertentu menjadi pantas: mencari item, menambah satu, membuang satu.

Tiada struktur yang pantas dalam segala-galanya. Memilih satu bermakna memilih operasi mana yang patut murah. Kosnya ditulis dalam Big O, dengan n ialah bilangan item.

Dua blok binaan asas ialah tatasusunan dan senarai terpaut.

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

Tatasusunan menyimpan itemnya dalam satu blok memori, satu demi satu. Komputer boleh mengira di mana item i berada, maka membaca a[i] mengambil O(1). Menyisip di hadapan bermakna menganjakkan setiap item: O(n).

Senarai terpaut menyimpan setiap item dalam satu nod dengan penuding ke nod seterusnya. Penuding terakhir ialah null. Menyisip di kepala (h) hanya mengubah satu penuding: O(1). Tetapi untuk sampai ke item i anda mesti mengikut i penuding: O(n).

Senarai terpaut dua hala juga mempunyai penuding ke nod sebelumnya, maka anda boleh berjalan ke kedua-dua arah.

Semakan kendiri Operasi manakah yang O(1) bagi tatasusunan tetapi O(n) bagi senarai terpaut satu hala?
  1. Melawat setiap item sekali
  2. Membaca item pada indeks i
  3. Mengira item satu demi satu
  4. Menyisip item baharu di hadapan

Jawapan: Membaca item pada indeks i. Tatasusunan mengira alamat item i secara terus. Senarai terpaut perlu mengikut i penuding dari kepala. Menyisip di hadapan ialah kes bertentangan: murah bagi senarai, mahal bagi tatasusunan.

2Tindanan dan barisan gilir

Tindanan seperti longgokan pinggan: anda menambah dan membuang hanya di atas. Item yang masuk terakhir keluar dahulu: LIFO.

  • push meletakkan item di atas, pop membuang item teratas, peek membaca item teratas tanpa membuangnya. Semuanya O(1).
  • Kegunaan: fungsi buat asal (undo) dalam editor, tindanan panggilan sesebuah program, menyemak bahawa kurungan seimbang, carian kedalaman dahulu.

Barisan gilir seperti barisan di kaunter: anda menyertai di belakang dan keluar di hadapan. Item yang masuk pertama keluar dahulu: FIFO.

  • enqueue menambah di belakang, dequeue membuang dari hadapan. Kedua-duanya O(1).
  • Kegunaan: kerja cetakan, mesej yang menunggu untuk dikendalikan, carian keluasan dahulu.

Deque (barisan gilir dua hujung) membenarkan penambahan dan pembuangan di kedua-dua hujung. Barisan gilir keutamaan sentiasa membuang item dengan keutamaan tertinggi dahulu; ia biasanya dibina sebagai longgokan.

Semakan kendiri Struktur data manakah yang paling sesuai untuk butang “undo” editor teks?
  1. Barisan gilir
  2. Graf
  3. Jadual cincang
  4. Tindanan

Jawapan: Tindanan. Undo mesti membalikkan tindakan terkini dahulu: masuk terakhir, keluar dahulu. Barisan gilir akan membuat asal tindakan paling lama dahulu.

3Pokok, longgokan, jadual cincang dan graf

Pokok mempunyai satu nod teratas, iaitu akar. Setiap nod lain mempunyai tepat satu induk. Nod tanpa anak ialah daun. Pokok dengan n nod mempunyai n − 1 tepi.

Dalam pokok binari setiap nod mempunyai paling banyak dua anak. Pokok carian binari (BST) menambah satu peraturan: kunci dalam subpokok kiri lebih kecil daripada nod, kunci dalam subpokok kanan lebih besar.

Mencari dalam BST mengikut satu laluan ke bawah, maka kosnya O(ketinggian). Pokok seimbang (AVL, merah-hitam) mengekalkan ketinggian hampir log₂ n. Kunci yang disisip mengikut urutan terisih membentuk rantai berketinggian n.

Longgokan ialah pokok binari yang setiap induknya lebih kecil daripada anaknya (longgokan min) atau lebih besar (longgokan maks). Minimum atau maksimum berada di akar, dan sisip serta buang berkos O(log n).

Jadual cincang menyimpan pasangan kunci–nilai. Fungsi cincang menukar kunci kepada indeks, maka sisip dan carian mengambil O(1) secara purata. Dua kunci dengan indeks yang sama ialah perlanggaran, diselesaikan dengan perantaian (senarai bagi setiap slot) atau pengalamatan terbuka (cuba slot lain).

Graf mempunyai bucu yang disambung oleh tepi, yang mungkin mempunyai arah atau pemberat. Ia disimpan sebagai matriks kejiranan, memori O(V²), atau sebagai senarai kejiranan, O(V + E).

Semakan kendiri Kunci 50, 30, 70, 20 dan 40 disisip mengikut urutan ini ke dalam pokok carian binari yang kosong. Apakah anak kiri bagi 30?
  1. 20
  2. 40
  3. 70
  4. Ia tiada anak kiri

Jawapan: 20. 20 lebih kecil daripada 50, maka ia ke kiri ke 30. Ia juga lebih kecil daripada 30, maka ia ke kiri sekali lagi. 40 lebih besar daripada 30 dan menjadi anak kanannya.

4Kaedah langkah demi langkah

Soalan sering menerangkan tugas dan bertanya struktur mana yang sesuai, atau bertanya bagaimana rupa sesuatu struktur selepas beberapa operasi.

  1. Cari operasi yang mesti pantas: capaian mengikut kedudukan, mengikut kunci, item terbaharu, item paling lama, item terkecil, atau julat.
  2. Padankan dengan struktur: indeks → tatasusunan, kunci → jadual cincang, terbaharu → tindanan, paling lama → barisan gilir, terkecil atau terbesar → longgokan, urutan terisih atau julat → pokok carian seimbang.
  3. Semak kos operasi lain yang diperlukan tugas itu, dalam Big O.
  4. Untuk soalan jejak, jalankan operasi satu demi satu dan tulis keadaan selepas setiap satu.
  5. Semak keadaan akhir dengan peraturan struktur: LIFO, FIFO, susunan BST atau susunan longgokan.

5Contoh terselesai

Ikuti setiap langkah. Cuba ramalkan langkah seterusnya sebelum anda membukanya.

Contoh terselesai

Kunci 50, 30, 70, 20, 40 dan 60 disisip mengikut urutan ini ke dalam pokok carian binari yang kosong. Apakah traversal tertib-dalam, dan berapa banyak perbandingan diperlukan untuk mencari 60?

1

Sisip akar

Kunci pertama, 50, menjadi akar.

2

Sisip 30 dan 70

30 lebih kecil daripada 50, maka ia ke kiri. 70 lebih besar daripada 50, maka ia ke kanan.

503070
3

Sisip 20, 40 dan 60

20: lebih kecil daripada 50, lebih kecil daripada 30, maka di kiri 30. 40: lebih kecil daripada 50, lebih besar daripada 30, maka di kanan 30. 60: lebih besar daripada 50, lebih kecil daripada 70, maka di kiri 70.

503070204060
4

Traversal tertib-dalam

Traversal tertib-dalam melawat subpokok kiri, kemudian nod, kemudian subpokok kanan.

Itu memberi 20, 30, 40, 50, 60, 70: kunci dalam urutan terisih, seperti yang sentiasa berlaku bagi BST.

5

Cari 60

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

503070204060

Carian memerlukan 3 perbandingan, satu bagi setiap aras.

Jawapan

Tertib-dalam: 20, 30, 40, 50, 60, 70. Carian 60 memerlukan 3 perbandingan.

6Kesilapan lazim

  • Mengelirukan LIFO dengan FIFO. Tindanan memulangkan item terbaharu, barisan gilir item paling lama.
  • Menyangka senarai terpaut memberi capaian pantas mengikut indeks. Ia mesti berjalan dari kepala.
  • Menganggap BST sentiasa O(log n). Hanya pokok seimbang yang begitu; sisipan terisih memberi O(n).
  • Terlupa perlanggaran dalam jadual cincang. O(1) ialah purata, bukan kes terburuk.
  • Mengelirukan traversal. Tertib-awal: nod dahulu. Tertib-dalam: nod di tengah. Tertib-akhir: nod terakhir.
  • Menggunakan matriks kejiranan untuk graf besar yang jarang. Ia membazirkan memori O(V²).
Semakan kendiri Anda enqueue 1, 2 dan 3 ke dalam barisan gilir kosong, mengikut urutan ini. Item manakah yang dipulangkan oleh dequeue pertama?
  1. 1, 2 dan 3 bersama-sama
  2. 1
  3. 2
  4. 3

Jawapan: 1. Barisan gilir ialah masuk pertama, keluar dahulu, maka 1 keluar dahulu. 3 ialah jawapan bagi tindanan (pop), yang memulangkan item terbaharu.

7Rupa soalan peperiksaan

  • Mudah: istilah dan fakta utama. LIFO dan FIFO, apakah nod, akar atau daun, peraturan BST, apa yang dilakukan oleh fungsi cincang.
  • Sederhana: menerapkan konsep. Struktur mana yang sesuai untuk sesuatu tugas, hasil push dan pop atau sisipan BST, traversal pokok, jadual cincang dengan penyelakan linear, kos dalam Big O.
  • Sukar: kes dan analisis. Pokok seimbang, longgokan dalam tatasusunan, pokok-B, trie, union-find, penapis Bloom dan reka bentuk seperti cache LRU.

Bagi longgokan yang disimpan dalam tatasusunan dari indeks 0, anak bagi indeks i berada pada 2i + 1 dan 2i + 2, dan induknya berada pada ⌊(i − 1) / 2⌋.

Belajar langkah demi langkah dalam aplikasiBelajar langkah demi langkah dalam aplikasi

Contoh soalan

Contoh 1Mudah

Apakah perbezaan utama antara tatasusunan statik dan tatasusunan dinamik?

  1. ATatasusunan statik membenarkan akses indeks yang lebih perlahan
  2. BTatasusunan dinamik boleh membesar dengan berpindah ke blok memori yang lebih besar
  3. CTatasusunan dinamik menyimpan elemennya dalam nod berpaut supaya ia boleh membesar satu demi satu
  4. DTatasusunan statik hanya boleh menyimpan nombor
Tunjukkan petunjuk
  1. Senarai Python dan ArrayList Java ialah contoh salah satunya.
  2. Dua jawapan salah kini telah dipangkah. Satu daripada dua yang tinggal adalah betul.
Tunjukkan jawapan dan penerangan

Mengapa ini jawapannya

Tatasusunan statik mempunyai saiz tetap; tatasusunan dinamik memperuntukkan tatasusunan lebih besar dan menyalin elemen apabila ia penuh.

Jawapan

B · Tatasusunan dinamik boleh membesar dengan berpindah ke blok memori yang lebih besar
Contoh 2Sederhana

Bagaimanakah extract-min berfungsi dalam timbunan min binari?

  1. ABuang elemen terakhir tatasusunan
  2. BPindahkan elemen terakhir ke akar dan gerakkannya ke bawah
  3. CBuang akar dan anjakkan semua elemen satu tempat ke kiri
  4. DCari semua daun untuk minimum baharu
Tunjukkan petunjuk
  1. Kekalkan pokok lengkap, kemudian betulkan susunan.
  2. Dua jawapan salah kini telah dipangkah. Satu daripada dua yang tinggal adalah betul.
Tunjukkan jawapan dan penerangan

Mengapa ini jawapannya

Elemen terakhir mengisi lubang di akar dan ditukar dengan anaknya yang lebih kecil sehingga sifat timbunan dipenuhi, mengambil O(log n).

Jawapan

B · Pindahkan elemen terakhir ke akar dan gerakkannya ke bawah
Contoh 3Sukar

Tanpa penyatuan mengikut pangkat atau pemampatan laluan, apakah kos kes terburuk satu find dalam struktur union-find dengan n elemen?

  1. AO(1)
  2. BO(α(n))
  3. CO(log n)
  4. DO(n)
Tunjukkan petunjuk
  1. Pokok boleh terdegenerasi.
  2. Dua jawapan salah kini telah dipangkah. Satu daripada dua yang tinggal adalah betul.
Tunjukkan jawapan dan penerangan

Mengapa ini jawapannya

Penyatuan naif boleh memaut pokok menjadi rantai panjang, jadi find mungkin mengikuti n − 1 penuding induk; kedua-dua heuristik menjadikannya hampir malar.

Jawapan

D · O(n)

Soalan dan jawapan

Apakah Struktur data?

Tiada struktur yang pantas dalam segala-galanya. Memilih satu bermakna memilih operasi mana yang patut murah. Kosnya ditulis dalam Big O, dengan n ialah bilangan item.

Dua blok binaan asas ialah tatasusunan dan senarai terpaut.

Bagaimanakah saya mempelajari Struktur data langkah demi langkah?
  1. Apakah struktur data
  2. Tindanan dan barisan gilir
  3. Pokok, longgokan, jadual cincang dan graf
  4. Kaedah langkah demi langkah
  5. Contoh terselesai
  6. Kesilapan lazim
  7. Rupa soalan peperiksaan
Apakah yang diliputi oleh latihan Struktur data?
  • Mudah: istilah dan fakta utama
  • Sederhana: menggunakan konsep
  • Sukar: kes dan analisis

Setiap soalan mempunyai empat pilihan, dan hanya satu yang betul. Buntu? Buka petunjuk kecil dahulu, dan penerangan penuh hanya apabila anda memerlukannya.

Cara latihan berfungsi

  • Setiap soalan mempunyai empat pilihan, dan hanya satu yang betul.
  • Buntu? Buka petunjuk kecil dahulu, dan penerangan penuh hanya apabila anda memerlukannya.
  • Kemajuan, kesilapan dan soalan tersimpan anda dikekalkan, jadi anda boleh menyemak sebelum peperiksaan.

Topik sebelum dan selepas topik ini

Pelajari dahulu

Kursus dengan topik ini

Lebih banyak topik dalam Sains komputer

Lembaran kerja boleh cetak

Berlatih Struktur data secara percumaBerlatih Struktur data sekarang5 soalan percuma setiap hari. Tiada kad diperlukan.