CS- Minggu 5
Penjelasan terperinci mengenai struktur data: dari array ke pokok, dan kemudian ke jadual hash
Artikel ini membincangkan beberapa struktur data biasa secara mendalam, termasuk tatasusunan, senarai yang dipautkan, pokok carian binari (BSTs) dan jadual hash, dan menerangkan organisasi mereka dalam ingatan dan kelebihan dan kekurangannya.
Struktur maklumat dan struktur data abstrak
Struktur maklumat merujuk kepada cara maklumat dianjurkan dalam ingatan, sementara struktur data abstrak adalah pemahaman konseptual kami tentang struktur ini. Memahami struktur data abstrak membantu kami melaksanakan pelbagai struktur data dalam amalan.
Timbunan dan giliran
Beratur adalah struktur data abstrak yang mengikuti prinsip FIFO (pertama dalam, keluar pertama), sama seperti menunggu dalam barisan. Operasi utamanya termasuk enqueuing (menambahkan unsur ke ekor barisan) dan dequeuing (mengeluarkan elemen kepala barisan).
Tumpukan mengikuti prinsip LIFO (Terakhir dalam Pertama), sama seperti menyusun plat. Operasinya termasuk menolak (menambah unsur ke bahagian atas timbunan) dan muncul (mengeluarkan unsur -unsur atas timbunan).
Array
Arahan adalah struktur yang terus menyimpan data dalam ingatan. Seperti yang ditunjukkan dalam gambar di bawah, tatasusunan menduduki ruang penyimpanan berterusan dalam ingatan.
Program, fungsi, dan pembolehubah lain mungkin wujud dalam ingatan, serta data berlebihan yang telah digunakan sebelum ini. Jika anda perlu menambah elemen baru ke array, anda perlu menyusun semula memori dan menyalin keseluruhan array, yang boleh menjadi tidak cekap.
Walaupun pra-memperuntukkan memori terlalu banyak dapat mengurangkan operasi salinan, ia akan membazirkan sumber sistem. Oleh itu, adalah penting untuk memperuntukkan ingatan mengikut keperluan sebenar.
Senarai pautan
Senarai yang dipautkan adalah struktur data yang kuat yang membolehkan penggabungan nilai yang terletak di kawasan memori yang berbeza ke dalam senarai dan menyokong pengembangan atau pengurangan dinamik.
Setiap CS- Minggu 5 mengandungi dua nilai: nilai data dan penunjuk ke CS- Minggu 5 seterusnya. Nilai penunjuk CS- Minggu 5 terakhir adalah batal, menunjukkan akhir senarai yang dipautkan.
Dalam bahasa C, CS- Minggu 5 boleh ditakrifkan seperti berikut:
<code class="c">typedef struct CS- Minggu 5e { int number; struct CS- Minggu 5e *next; } CS- Minggu 5e;</code>
Contoh berikut menunjukkan proses membuat senarai yang dipautkan:
Kekurangan senarai yang dipautkan termasuk keperluan untuk penunjuk penyimpanan memori tambahan dan ketidakupayaan untuk mengakses elemen secara langsung melalui indeks.
Pokok carian binari (BST)
Pokok carian binari adalah struktur pokok yang cekap menyimpan, mencari dan mengambil data.
Kelebihan BST adalah kecekapan dinamik dan carian (O (log n)), dan kelemahannya ialah kecekapan carian jatuh ke O (n) apabila pokok itu tidak seimbang dan memerlukan penunjuk penyimpanan memori tambahan.
Jadual Hash
Jadual hash adalah serupa dengan kamus dan mengandungi pasangan nilai utama. Ia menggunakan fungsi hash untuk memetakan kekunci untuk indeks array, dengan itu mencapai masa carian purata O (1).
Konflik hash (kekunci berganda yang dipetakan ke indeks yang sama) boleh diselesaikan dengan senarai yang dipautkan atau kaedah lain. Reka bentuk fungsi hash adalah penting untuk prestasi jadual hash. Contoh fungsi hash mudah adalah seperti berikut:
<code class="c">#include <ctype.h> unsigned int hash(const char *word) { return toupper(word[0]) - 'A'; }</ctype.h></code>
Artikel ini disusun berdasarkan kod sumber CS50X 2024.
Atas ialah kandungan terperinci CS- Minggu 5. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Struktur Data Bahasa C: Perwakilan data pokok dan graf adalah struktur data hierarki yang terdiri daripada nod. Setiap nod mengandungi elemen data dan penunjuk kepada nod anaknya. Pokok binari adalah jenis pokok khas. Setiap nod mempunyai paling banyak dua nod kanak -kanak. Data mewakili structtreenode {intData; structtreenode*left; structtreenode*right;}; Operasi mewujudkan pokok traversal pokok (predecision, in-order, dan kemudian pesanan) Node Node Carian Pusat Node Node adalah koleksi struktur data, di mana unsur-unsur adalah simpul, dan mereka boleh dihubungkan bersama melalui tepi dengan data yang betul atau tidak jelas yang mewakili jiran.

Menggunakan json.parse () rentetan ke objek adalah yang paling selamat dan paling efisien: pastikan rentetan mematuhi spesifikasi JSON dan mengelakkan kesilapan biasa. Gunakan cuba ... menangkap untuk mengendalikan pengecualian untuk meningkatkan keteguhan kod. Elakkan menggunakan kaedah eval (), yang mempunyai risiko keselamatan. Untuk rentetan JSON yang besar, parsing parsing atau parsing tak segerak boleh dipertimbangkan untuk mengoptimumkan prestasi.

Kebenaran mengenai masalah operasi fail: Pembukaan fail gagal: Kebenaran yang tidak mencukupi, laluan yang salah, dan fail yang diduduki. Penulisan data gagal: Penampan penuh, fail tidak boleh ditulis, dan ruang cakera tidak mencukupi. Soalan Lazim Lain: Traversal fail perlahan, pengekodan fail teks yang salah, dan kesilapan bacaan fail binari.

Bagaimana untuk membezakan antara tab penutup dan menutup seluruh penyemak imbas menggunakan JavaScript pada penyemak imbas anda? Semasa penggunaan harian penyemak imbas, pengguna boleh ...

Fungsi Readdir dalam sistem Debian adalah panggilan sistem yang digunakan untuk membaca kandungan direktori dan sering digunakan dalam pengaturcaraan C. Artikel ini akan menerangkan cara mengintegrasikan Readdir dengan alat lain untuk meningkatkan fungsinya. Kaedah 1: Menggabungkan Program Bahasa C dan Pipeline Pertama, tulis program C untuk memanggil fungsi Readdir dan output hasilnya:#termasuk#termasuk#includeintMain (intargc, char*argv []) {dir*dir; structdirent*entry; if (argc! = 2) {

Ya, URL yang diminta oleh Vue Axios mesti betul untuk permintaan itu berjaya. Format URL adalah: Protokol, Nama Hos, Laluan Sumber, Rentetan Pertanyaan Pilihan. Kesalahan biasa termasuk protokol yang hilang, salah ejaan, slash duplikat, nombor port yang hilang, dan format rentetan pertanyaan yang salah. Cara Mengesahkan Ketepatan URL: Masukkan secara manual di bar alamat penyemak imbas, gunakan alat pengesahan dalam talian, atau gunakan pilihan ValidateStatus Vue Axios dalam permintaan.

Hadidb: Pangkalan data Python yang ringan, tinggi, Hadidb (Hadidb) adalah pangkalan data ringan yang ditulis dalam Python, dengan tahap skalabilitas yang tinggi. Pasang HadIdb menggunakan pemasangan PIP: Pengurusan Pengguna PipInstallHadidB Buat Pengguna: CreateUser () Kaedah untuk membuat pengguna baru. Kaedah pengesahan () mengesahkan identiti pengguna. dariHadidb.OperationImportuserer_Obj = user ("admin", "admin") user_obj.

Menggunakan REDIS untuk mengunci operasi memerlukan mendapatkan kunci melalui arahan SETNX, dan kemudian menggunakan perintah luput untuk menetapkan masa tamat tempoh. Langkah-langkah khusus adalah: (1) Gunakan arahan SETNX untuk cuba menetapkan pasangan nilai utama; (2) Gunakan perintah luput untuk menetapkan masa tamat tempoh untuk kunci; (3) Gunakan perintah DEL untuk memadam kunci apabila kunci tidak lagi diperlukan.
