Golang ialah bahasa pengaturcaraan yang cekap dan ringkas yang mempunyai kelebihan hebat dalam prestasi dan keselarasan. Di Golang, terdapat banyak pelaksanaan struktur data pengumpulan, termasuk senarai. Senarai ialah struktur data yang sangat penting yang boleh digunakan untuk menyimpan set data dan menyokong memasukkan dan memadam elemen di mana-mana lokasi. Artikel ini akan memperkenalkan cara menggunakan Golang untuk melaksanakan Senarai.
Senarai ialah struktur data, yang merupakan himpunan unsur tertib. Dalam Senarai, setiap elemen mempunyai pendahulu dan pengganti, kecuali elemen pertama dan terakhir. Elemen pertama tidak mempunyai elemen pendahulu, dan elemen terakhir tidak mempunyai elemen pengganti. Senarai menyediakan beberapa operasi asas, seperti menambah elemen, memadamkan elemen, mengakses elemen, dsb.
Di Golang, untuk melaksanakan Senarai, anda boleh menggunakan senarai terpaut dua kali. Senarai berpaut dua kali mengandungi kepala penuding yang menghala ke nod pertama dan ekor penuding yang menghala ke nod terakhir. Setiap nod mengandungi penuding prev yang menghala ke nod sebelumnya dan penuding seterusnya yang menghala ke nod seterusnya, serta nilai val untuk menyimpan nilai nod. Seperti yang ditunjukkan di bawah:
taip ListNode struct {
prev *ListNode // 指向前一个节点 next *ListNode // 指向后一个节点 val interface{// 当前节点的值 }
}
type List struct {
head *ListNode // 指向第一个节点 tail *ListNode // 指向最后一个节点 len int // List的长度
}
Apabila melaksanakan List, kami memerlukan Pay perhatian kepada perkara berikut:
(1) Tambah elemen
Terdapat dua cara utama untuk menambah elemen pada Senarai, iaitu menambah elemen pada kepala dan menambah elemen pada ekor. Kami boleh melaksanakannya menggunakan kaedah AddFront dan AddBack.
func (senarai *Senarai) AddFront(antara muka val{}) {
node := &ListNode{ prev: nil, next: list.head, val: val, } if list.head == nil { // 如果链表为空 list.head = node list.tail = node } else { list.head.prev = node list.head = node } list.len++
}
func (senarai *Senarai) AddBack(antara muka val{}) {
node := &ListNode{ prev: list.tail, next: nil, val: val, } if list.tail == nil { // 如果链表为空 list.head = node list.tail = node } else { list.tail.next = node list.tail = node } list.len++
}
(2) Memadamkan elemen
Memadamkan elemen terbahagi kepada dua situasi, memadamkan elemen pengepala dan memadamkan elemen ekor. Kami juga boleh menggunakan kaedah RemoveFront dan RemoveBack untuk memadamkan elemen.
func (senarai *Senarai) RemoveFront() {
if list.head == nil { // 如果链表为空 return } if list.head == list.tail { // 如果链表只有一个元素 list.head = nil list.tail = nil list.len = 0 return } list.head = list.head.next list.head.prev = nil list.len--
}
func (senarai *Senarai) RemoveBack() {
if list.tail == nil { // 如果链表为空 return } if list.head == list.tail { // 如果链表只有一个元素 list.head = nil list.tail = nil list.len = 0 return } list.tail = list.tail.prev list.tail.next = nil list.len--
}
(3) Mengakses elemen
Untuk mengakses elemen dalam Senarai, anda hanya perlu melintasi satu demi satu bermula dari kepala atau ekor senarai sehingga anda menemui elemen yang diperlukan. Kita boleh menggunakan kaedah Depan dan Belakang untuk mengakses elemen pertama dan terakhir dalam Senarai.
antara muka func (senarai *Senarai) Depan(){} {
if list.head == nil { return nil } return list.head.val
}
antara muka func (senarai *Senarai) Belakang(){} {
if list.tail == nil { return nil } return list.tail.val
}
Di atas adalah kaedah asas untuk melaksanakan Senarai di Golang, yang boleh dilaraskan dan dioptimumkan mengikut keperluan sebenar.
Sangat mudah untuk melaksanakan Senarai di Golang, kita hanya perlu menggunakan senarai pautan berganda. Senarai telah dilaksanakan dalam perpustakaan standard di Golang, jadi disyorkan untuk menggunakan Senarai dalam perpustakaan standard dalam penggunaan sebenar. Jika anda perlu menyesuaikan Senarai, anda boleh melaraskan dan mengoptimumkan kod yang diberikan di atas mengikut keperluan sebenar.
Atas ialah kandungan terperinci pelaksanaan senarai golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!