Rumah >pembangunan bahagian belakang >Golang >Ketahui cara melaksanakan senarai pautan tunggal dalam bahasa Go dari awal
Ketahui kaedah pelaksanaan senarai pautan tunggal dalam bahasa Go dari awal
Apabila mempelajari struktur data dan algoritma, senarai pautan tunggal ialah salah satu struktur data asas dan penting. Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk melaksanakan senarai terpaut tunggal dan membantu pembaca memahami dengan lebih baik struktur data ini melalui contoh kod tertentu.
Senarai pautan tunggal ialah struktur data linear yang terdiri daripada satu siri nod. Setiap nod mengandungi data dan penunjuk ke nod seterusnya. Penunjuk nod terakhir menghala ke nol.
Senarai pautan tunggal biasanya menyokong beberapa operasi asas, termasuk sisipan, pemadaman dan carian. Sekarang kami akan melaksanakan operasi ini langkah demi langkah.
Pertama, kita perlu mentakrifkan struktur nod senarai terpaut tunggal:
type Node struct { data interface{} next *Node }
Dalam struktur di atas, medan data
digunakan untuk menyimpan data nod , next Medan
ialah penunjuk ke nod seterusnya. data
字段用于存储节点的数据,next
字段是指向下一个节点的指针。
接下来,我们需要定义一个LinkedList
type LinkedList struct { head *Node } func NewLinkedList() *LinkedList { return &LinkedList{} }Masukkan nodSisipkan di kepala senarai terpaut tunggal Kaedah nod:
func (list *LinkedList) Insert(data interface{}) { newNode := &Node{data: data} if list.head == nil { list.head = newNode } else { newNode.next = list.head list.head = newNode } }Padam nodKaedah untuk melaksanakan pemadaman nod dengan data yang ditentukan:
func (list *LinkedList) Delete(data interface{}) { if list.head == nil { return } if list.head.data == data { list.head = list.head.next return } prev := list.head current := list.head.next for current != nil { if current.data == data { prev.next = current.next return } prev = current current = current.next } }Cari nodKaedah untuk melaksanakan nod yang mencari data yang dinyatakan lengkap:
func (list *LinkedList) Search(data interface{}) bool { current := list.head for current != nil { if current.data == data { return true } current = current.next } return false }adalah contoh kod , menunjukkan cara membuat senarai pautan tunggal, memasukkan nod, memadam nod dan mencari nod:
package main import "fmt" type Node struct { data interface{} next *Node } type LinkedList struct { head *Node } func NewLinkedList() *LinkedList { return &LinkedList{} } func (list *LinkedList) Insert(data interface{}) { newNode := &Node{data: data} if list.head == nil { list.head = newNode } else { newNode.next = list.head list.head = newNode } } func (list *LinkedList) Delete(data interface{}) { if list.head == nil { return } if list.head.data == data { list.head = list.head.next return } prev := list.head current := list.head.next for current != nil { if current.data == data { prev.next = current.next return } prev = current current = current.next } } func (list *LinkedList) Search(data interface{}) bool { current := list.head for current != nil { if current.data == data { return true } current = current.next } return false } func main() { list := NewLinkedList() list.Insert(1) list.Insert(2) list.Insert(3) fmt.Println(list.Search(2)) // Output: true list.Delete(2) fmt.Println(list.Search(2)) // Output: false }
Atas ialah kandungan terperinci Ketahui cara melaksanakan senarai pautan tunggal dalam bahasa Go dari awal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!