Rumah pembangunan bahagian belakang Golang Timbunan, tindanan, kamus, pokok merah-hitam dan struktur data lain dalam bahasa Go

Timbunan, tindanan, kamus, pokok merah-hitam dan struktur data lain dalam bahasa Go

Jun 03, 2023 pm 03:10 PM
kamus timbunan timbunan

Dengan perkembangan sains komputer, struktur data telah menjadi subjek penting. Dalam pembangunan perisian, struktur data adalah sangat penting Mereka boleh meningkatkan kecekapan dan kebolehbacaan program, dan juga boleh membantu menyelesaikan pelbagai masalah. Dalam bahasa Go, struktur data seperti timbunan, tindanan, kamus dan pokok merah-hitam juga sangat penting. Artikel ini akan memperkenalkan struktur data ini dan pelaksanaannya dalam bahasa Go.

  1. Heap

Heap ialah struktur data klasik yang digunakan untuk menyelesaikan masalah baris gilir keutamaan. Barisan keutamaan merujuk kepada baris gilir yang mengeluarkan elemen mengikut keutamaannya. Timbunan boleh digunakan untuk mencari dengan cepat elemen keutamaan tertinggi dalam baris gilir, supaya operasi sisipan, pemadaman dan carian boleh dilaksanakan dalam kerumitan masa O(log n).

Dalam bahasa Go, heap boleh dilaksanakan menggunakan pakej bekas/timbunan. Pakej ini menyediakan definisi antara muka, yang perlu melaksanakan tiga kaedah:

// Len mengembalikan bilangan elemen dalam timbunan
func (h *timbunan) Len() int {

// ...
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}

// Kurang membandingkan keutamaan dua elemen, mengembalikan benar bermakna elemen pertama mempunyai keutamaan yang lebih tinggi
func (h *timbunan) Kurang(i, j int) bool {

// ...
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}

// Tukar menukar kedudukan dua elemen
func (h *timbunan) Tukar(i, j int) {

// ...
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}

Antaranya, kaedah Less perlu melaksanakan logik perbandingan keutamaan elemen mengikut keperluan sebenar.

Selepas melaksanakan ketiga-tiga kaedah ini, anda boleh menukar kepingan menjadi timbunan melalui kaedah timbunan.Init. Apabila anda perlu menambah atau mengalih keluar elemen, anda boleh menggunakan kaedah heap.Push dan heap.Pop dalam pakej bekas/timbunan.

  1. Timbunan

Timbunan ialah satu lagi struktur data biasa, yang boleh merealisasikan storan data masuk pertama dan keluar terakhir. Tindanan digunakan terutamanya dalam senario seperti panggilan program dan rekursi Ia boleh merekodkan susunan panggilan fungsi dan memudahkan pengembalian fungsi.

Dalam bahasa Go, anda boleh menggunakan struktur senarai dalam pakej bekas/senarai untuk melaksanakan tindanan. Perlu diingatkan bahawa operasi tolak dan pop tindanan perlu dilaksanakan menggunakan list.PushBack dan list.Back().Value.(type) masing-masing.

  1. Kamus

Kamus (Peta) ialah struktur data yang biasa digunakan yang boleh menyimpan dan menanyakan pasangan nilai kunci. Kamus juga merupakan struktur data yang sangat penting dalam bahasa Go dan sering digunakan untuk merekodkan konfigurasi, maklumat statistik, dsb.

Dalam bahasa Go, kamus boleh ditakrifkan terus menggunakan kata kunci peta. Seperti berikut:

// Takrifkan kamus
m := make(map[string]int)

// Tambah pasangan nilai kunci
m["apple"] = 2
m["pisang"] = 3

// Pasangan nilai kunci pertanyaan
fmt.Println(m["epal"]) // Output 2

// Delete Key-value pair
delete(m, "banana")

Perlu diambil perhatian bahawa jenis kunci kamus mestilah jenis data yang menyokong operator ==, seperti rentetan , int, dsb. Begitu juga, jenis nilai kamus juga perlu mematuhi peraturan dalam bahasa Go.

  1. Pokok Merah-Hitam

Pokok Merah-Hitam ialah pokok carian binari pengimbangan diri yang boleh dijalankan dalam O(log n) Laksanakan sisipan, pemadaman dan operasi carian dalam kerumitan masa. Nod pokok merah-hitam mempunyai dua warna, merah dan hitam Mereka mempunyai ciri-ciri berikut:

  • Nod akar berwarna hitam
  • Semua nod daun adalah hitam dan kosong nod (iaitu, nod daun tidak menyimpan data);
  • Semua nod merah mesti mempunyai dua nod anak hitam (pokok merah-hitam menjamin bahawa semua laluan dari nod akar ke nod daun mempunyai bilangan yang sama nod hitam) ;
  • Semua laluan dari mana-mana nod ke nod daunnya mengandungi bilangan nod hitam yang sama.

Dalam bahasa Go, anda boleh menggunakan pakej bekas/rbtree untuk melaksanakan pokok merah-hitam. Pakej ini menyediakan definisi antara muka Kaedah yang perlu dilaksanakan ialah:

// Kurang membandingkan saiz dua elemen dan mengembalikan benar untuk menunjukkan bahawa elemen pertama lebih kecil
func (x *MyStruct. ) Less( than item) bool {

// ...
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}

Antaranya, kaedah Less perlu melaksanakan logik perbandingan saiz elemen mengikut keperluan sebenar. Semasa pelaksanaan khusus, struktur MyStruct perlu dibenamkan dalam struktur Item, seperti yang ditunjukkan di bawah:

taip MyStruct struct {

item.Item
// ...
Salin selepas log masuk

}

Selepas melaksanakan kaedah Kurang MyStruct, anda boleh menggunakan bekas Kaedah Root dalam pakej /rbtree mendapatkan nod akar pokok, dan memasukkan, memadam dan menanyakan pokok merah-hitam melalui kaedah Insert, Delete, dan Get. Perlu diingatkan bahawa kaedah Dapatkan yang disediakan oleh pakej ini mengembalikan nod yang sepadan, bukan nilai nod.

Ringkasan

Artikel ini memperkenalkan struktur data yang biasa digunakan dalam bahasa Go: timbunan, tindanan, kamus, pokok merah-hitam. Struktur data ini sangat biasa dalam pembangunan harian, dan menguasai penggunaannya boleh meningkatkan kecekapan dan kebolehbacaan kod kami.

Dalam pembangunan sebenar, kita perlu memilih struktur data yang sesuai berdasarkan keperluan sebenar. Contohnya, anda boleh menggunakan timbunan apabila anda perlu melaksanakan baris gilir keutamaan, anda boleh menggunakan kamus apabila anda perlu menyimpan pasangan nilai kunci, anda boleh menggunakan pokok merah-hitam apabila anda perlu melaksanakan carian pantas, dsb.

Menggunakan struktur data yang sesuai boleh menjadikan kod kami lebih cekap, ringkas dan mudah diselenggara. Saya harap artikel ini akan membantu anda mempelajari dan menggunakan struktur data.

Atas ialah kandungan terperinci Timbunan, tindanan, kamus, pokok merah-hitam dan struktur data lain dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Kunci kamus kosong tidak betul: Bagaimana untuk menyelesaikan ralat kunci kamus Python? Kunci kamus kosong tidak betul: Bagaimana untuk menyelesaikan ralat kunci kamus Python? Jun 24, 2023 pm 03:03 PM

Kamus dalam Python ialah struktur data yang fleksibel dan berkuasa yang boleh menyimpan pasangan nilai kunci dan mempunyai fungsi carian dan sisipan pantas. Walau bagaimanapun, jika anda tidak berhati-hati dengan pasangan nilai kunci kamus, anda mungkin menghadapi masalah kekunci kamus kosong. Masalah ini sering menyebabkan kod ranap atau mengeluarkan hasil yang tidak dijangka. Artikel ini akan memperkenalkan dua kaedah untuk menyelesaikan ralat kunci kamus kosong dalam Python. Kaedah 1: Gunakan penyataan jika untuk menghalang kekunci kamus kosong, kamus Python tidak boleh mempunyai kunci pendua, jika tidak pasangan nilai kunci sebelumnya akan ditimpa. Apabila nilai kunci kamus kosong

Program Python untuk mendapatkan elemen pertama dan terakhir dalam kamus Program Python untuk mendapatkan elemen pertama dan terakhir dalam kamus Sep 07, 2023 pm 05:01 PM

Python ialah bahasa pengaturcaraan peringkat tinggi yang ditafsirkan, berorientasikan objek, dengan semantik dinamik. Dibangunkan oleh GudioVanRossum pada tahun 1991. Ia menyokong pelbagai paradigma pengaturcaraan, termasuk pengaturcaraan berstruktur, berorientasikan objek dan berfungsi. Sebelum kita menyelami topik ini, mari kita semak semula konsep asas yang berkaitan dengan soalan yang kami sediakan. Kamus ialah set item yang unik, boleh ubah dan teratur. Pendakap kerinting digunakan semasa menulis kamus, dan ia mengandungi kunci dan nilai: nama kunci boleh digunakan untuk merujuk kepada objek kamus. Nilai data disimpan dalam kamus dalam bentuk pasangan kunci:nilai. Maksud tertib dan tidak tersusun Apabila kita mengatakan kamus itu tersusun, maksudnya kandungannya mempunyai susunan tertentu dan tidak berubah. Item yang tidak dipesan tidak mempunyai pesanan yang jelas dan oleh itu tidak boleh digunakan

Bagaimana untuk mendapatkan kunci seterusnya dalam kamus dalam Python? Bagaimana untuk mendapatkan kunci seterusnya dalam kamus dalam Python? Aug 28, 2023 pm 11:45 PM

Kamus ialah jenis data yang berkuasa dalam Python. Ia terdiri daripada pasangan nilai kunci. Operasi carian, penambahan dan lain-lain boleh diselesaikan dengan cekap melalui jenis data ini. Walaupun mengakses nilai dalam kamus adalah mudah, mungkin terdapat situasi di mana anda perlu mencari kunci seterusnya dalam kamus. Python menyediakan beberapa cara untuk mencapai ini, bergantung pada keperluan khusus anda. Dalam artikel ini, kami akan meneroka cara yang berbeza untuk mendapatkan kunci seterusnya dalam kamus dalam Python. Menggunakan kunci dan kaedah indeks kamus adalah koleksi tidak tertib dalam Python. Oleh itu, kita perlu menukar kunci ke dalam bentuk yang disusun terlebih dahulu. Mula-mula kita boleh menambahkan semua kunci dalam bentuk senarai. Seterusnya, kita boleh mencari kunci seterusnya dengan mengindeks senarai. Dengan bantuan kunci kita juga boleh

Apakah perbezaan antara timbunan dan timbunan Apakah perbezaan antara timbunan dan timbunan Nov 22, 2022 pm 04:12 PM

Perbezaan: 1. Ruang timbunan biasanya diperuntukkan dan dikeluarkan oleh pengaturcara manakala ruang timbunan diperuntukkan dan dikeluarkan secara automatik oleh sistem pengendalian. 2. Timbunan disimpan dalam cache peringkat kedua, dan kitaran hayatnya ditentukan oleh algoritma pengumpulan sampah mesin maya manakala timbunan menggunakan cache peringkat pertama, yang biasanya berada dalam ruang storan apabila ia dipanggil , dan dikeluarkan serta-merta selepas panggilan selesai. 3. Struktur data adalah berbeza boleh dianggap sebagai pokok, manakala tindanan ialah struktur data masuk pertama dan terakhir.

Deque dalam Python: Melaksanakan baris gilir dan susunan yang cekap Deque dalam Python: Melaksanakan baris gilir dan susunan yang cekap Apr 12, 2023 pm 09:46 PM

deque dalam Python ialah deque peringkat rendah, sangat dioptimumkan yang berguna untuk melaksanakan baris gilir dan susunan Pythonic yang elegan dan cekap, yang merupakan jenis data berasaskan senarai yang paling biasa dalam pengkomputeran. Dalam artikel ini, Yun Duojun akan mempelajari perkara berikut bersama-sama anda: Mula menggunakan deque untuk memunculkan dan menambahkan elemen dengan berkesan. Gunakan deque untuk membina baris gilir yang cekap senarai Python dan elemen pop timbul Operasi secara amnya sangat Cekap. Jika kerumitan masa dinyatakan dalam Big O, maka kita boleh mengatakan bahawa ia adalah O(1). Dan apabila Python perlu memperuntukkan semula memori untuk meningkatkan senarai asas untuk menerima elemen baharu, ini

Kamus permulaan program C++ Kamus permulaan program C++ Sep 09, 2023 pm 07:01 PM

C++ berbeza daripada Python dari segi kamus dengan nama yang sama, tetapi ia mempunyai struktur data yang sama dengan fungsi yang serupa. C++ menyokong pemetaan, yang boleh digunakan dalam kelas STL std::map. Objek peta mengandungi sepasang nilai dalam setiap entri, satu adalah nilai utama dan satu lagi adalah nilai peta. Nilai utama digunakan untuk mencari dan mengenal pasti secara unik entri dalam peta. Walaupun nilai yang dipetakan tidak semestinya unik, nilai utama mestilah sentiasa unik dalam peta. Mari kita lihat cara menggunakan pemetaan. Mula-mula, mari lihat cara untuk menentukan struktur data yang dipetakan dalam C++. Sintaks #includemap<data_type1,data_type2>myMap Mari kita ambil contoh untuk melihat cara melakukan ini − Contoh #incl

Perbezaan antara timbunan dan timbunan Perbezaan antara timbunan dan timbunan Jul 18, 2023 am 10:17 AM

Perbezaan antara timbunan dan timbunan: 1. Kaedah peruntukan memori adalah berbeza Timbunan diperuntukkan secara manual dan dikeluarkan oleh pengaturcara, manakala timbunan diperuntukkan dan dikeluarkan secara automatik oleh sistem pengendalian timbunan ditetapkan, manakala timbunan diperuntukkan dan dikeluarkan secara automatik oleh sistem pengendalian Saiznya berkembang secara dinamik 3. Kaedah capaian data adalah berbeza capaian dicapai melalui nama pembolehubah; 4. Kitaran hayat data , Dalam timbunan, kitaran hayat data boleh menjadi sangat panjang, manakala dalam timbunan, kitaran hayat pembolehubah ditentukan oleh skop di mana ia berada.

Program Python untuk memadam nilai nol dalam kamus sebagai contoh Program Python untuk memadam nilai nol dalam kamus sebagai contoh Sep 03, 2023 pm 04:45 PM

Kamus dikenali sebagai jenis data pengumpulan. Mereka menyimpan data dalam bentuk pasangan nilai kunci. Ia disusun dan boleh berubah, iaitu mengikut susunan tertentu dan diindeks. Kita boleh menukar nilai kunci supaya ia boleh dimanipulasi atau diubah. Kamus tidak menyokong pertindihan data. Setiap kunci boleh mempunyai berbilang nilai yang dikaitkan dengannya, tetapi satu nilai tidak boleh mempunyai berbilang kunci. Kita boleh melakukan banyak operasi menggunakan kamus. Seluruh mekanisme bergantung pada nilai yang disimpan. Dalam artikel ini, kami akan membincangkan teknik yang boleh anda gunakan untuk mengalih keluar "nilai nol" daripada kamus. Sebelum memulakan operasi utama, kita mesti mempunyai pemahaman yang mendalam tentang pengendalian nilai dalam kamus. Mari kita ambil gambaran ringkas artikel ini. Artikel ini dibahagikan kepada dua bahagian - Bahagian 1 akan memberi tumpuan kepada konsep "nilai nol" dan kepentingannya. Dalam bahagian ke-2

See all articles