Rumah > Artikel > pembangunan bahagian belakang > Buat struktur senarai terpaut berprestasi tinggi, ditulis dalam Golang
Golang ialah bahasa pengaturcaraan berprestasi tinggi dengan keupayaan serentak dan pengurusan memori menjadikannya sangat sesuai untuk menulis struktur data yang cekap. Senarai terpaut ialah struktur data biasa Berikut akan memperkenalkan cara menggunakan Golang untuk menulis struktur senarai terpaut yang cekap dan memberikan contoh kod khusus.
Senarai terpaut ialah struktur data linear yang terdiri daripada nod Setiap nod mengandungi nilai dan penunjuk ke nod seterusnya. Berbanding dengan tatasusunan, kelebihan senarai terpaut ialah memasukkan dan memadam elemen adalah lebih cekap kerana tidak perlu memindahkan elemen lain. Bagaimanapun, kecekapan carian senarai terpaut agak rendah kerana ia perlu diakses satu persatu bermula dari nod kepala.
Pertama, kami mentakrifkan struktur nod senarai terpaut, kodnya adalah seperti berikut:
type Node struct { value int next *Node }
Dalam struktur senarai terpaut, kami mentakrifkan nilai jenis integer dan penuding ke nod seterusnya. Seterusnya, kami mentakrifkan struktur senarai terpaut, yang mengandungi penunjuk ke nod kepala dan nod ekor.
type LinkedList struct { head *Node tail *Node }
Kini kami boleh melaksanakan beberapa operasi asas senarai terpaut, seperti sisipan, pemadaman dan carian. Berikut ialah contoh kod untuk operasi sisipan:
func (list *LinkedList) Insert(value int) { newNode := &Node{value: value} if list.head == nil { list.head = newNode list.tail = newNode } else { list.tail.next = newNode list.tail = newNode } }
Dalam operasi sisipan, kami mula-mula menentukan sama ada senarai terpaut kosong Jika ia kosong, kedua-dua nod kepala dan nod ekor menghala ke nod baharu. Jika ia tidak kosong, kami menambah nod baharu selepas nod ekor dan menetapkan nod baharu sebagai nod ekor baharu.
Berikut ialah contoh kod untuk operasi pemadaman:
func (list *LinkedList) Remove(value int) { if list.head == nil { return } if list.head.value == value { list.head = list.head.next if list.head == nil { list.tail = nil } return } prev := list.head current := list.head.next for current != nil { if current.value == value { prev.next = current.next if current == list.tail { list.tail = prev } return } prev = current current = current.next } }
Operasi pemadaman terlebih dahulu menentukan sama ada senarai terpaut kosong dan kembali terus jika ia kosong. Kemudian kita dapati nod yang akan dipadamkan dengan melintasi senarai terpaut, simpan nod pendahulunya sebelum memadamkan nod, dan kemudian arahkan nod pendahulu seterusnya ke nod seterusnya yang akan dipadamkan. Apa yang memerlukan perhatian khusus ialah jika nod yang hendak dipadamkan ialah nod ekor, nod ekor senarai terpaut perlu dikemas kini.
Akhir sekali, mari kita laksanakan operasi carian senarai terpaut:
func (list *LinkedList) Search(value int) bool { current := list.head for current != nil { if current.value == value { return true } current = current.next } return false }
Operasi carian adalah sangat mudah, kita hanya perlu merentasi senarai terpaut dan membandingkan sama ada nilai nod adalah sama dengan nilai sasaran.
Sekarang kami telah melaksanakan operasi asas senarai terpaut, kami boleh menggunakan senarai terpaut melalui contoh kod berikut:
func main() { list := LinkedList{} list.Insert(1) list.Insert(2) list.Insert(3) fmt.Println(list.Search(2)) // Output: true list.Remove(2) fmt.Println(list.Search(2)) // Output: false }
Di atas ialah contoh kod menggunakan Golang untuk menulis struktur senarai terpaut yang cekap. Senarai terpaut ialah struktur data yang penting, dan mengetahui cara menulis pelaksanaan senarai terpaut yang cekap sangat membantu untuk menyelesaikan masalah praktikal. Semoga artikel ini dapat membantu anda!
Atas ialah kandungan terperinci Buat struktur senarai terpaut berprestasi tinggi, ditulis dalam Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!