Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk membalikkan senarai pautan dalam golang
Pembalikan senarai terpaut ialah masalah algoritma biasa, yang memerlukan pembalikan tertib senarai terpaut. Bagi bahasa Golang, pelaksanaan penyongsangan senarai terpaut boleh dilaksanakan menggunakan ciri bahasa asas seperti penunjuk dan struktur Golang.
Di bawah ini kami akan memperkenalkan pelaksanaan Golang penyongsangan senarai terpaut secara terperinci.
Pertama, mari kita lihat struktur asas senarai terpaut. Senarai terpaut terdiri daripada nod, dan setiap nod mempunyai penunjuk ke nod seterusnya, iaitu, penuding seterusnya. Nod kepala senarai terpaut mewakili kedudukan permulaan keseluruhan senarai terpaut, dan penunjuk seterusnya nod kepala menghala ke nod pertama. Seperti yang ditunjukkan di bawah:
type ListNode struct { Val int Next *ListNode }
Antaranya, Val mewakili nilai nod, dan Seterusnya mewakili penunjuk ke nod seterusnya. Dua isu perlu diberi perhatian apabila melaksanakan senarai terpaut:
Selepas melengkapkan definisi senarai terpaut, anda boleh menulis pelaksanaan Golang pembalikan senarai terpaut. Kaedah pelaksanaan khusus adalah seperti berikut:
func reverseList(head *ListNode) *ListNode { //边界条件 if head == nil || head.Next == nil { return head } //定义当前节点和下一个节点指针 cur, next := head, head.Next //头节点指针置为空 head.Next = nil for next != nil { //暂存下一个节点的指针 tmp := next.Next //反转节点 next.Next = cur //移动当前节点和下一个节点指针 cur, next = next, tmp } return cur }
Pertama, nilaikan syarat sempadan Jika senarai terpaut kosong atau hanya mempunyai satu nod, terus kembali ke senarai terpaut asal. Kemudian tentukan penunjuk nod semasa dan penuding nod seterusnya. Memandangkan pembalikan senarai terpaut memerlukan nod semasa untuk menghala ke nod sebelumnya, nod sebelumnya bagi nod pertama perlu ditetapkan kepada nil. Kemudian terbalikkan senarai terpaut melalui gelung Operasi pembalikan khusus ialah:
func main() { var head ListNode head.Next = &ListNode{Val: 1} head.Next.Next = &ListNode{Val: 2} head.Next.Next.Next = &ListNode{Val: 3} head.Next.Next.Next.Next = &ListNode{Val: 4} //链表反转 head.Next = reverseList(head.Next) for head.Next != nil { fmt.Println(head.Next.Val) head.Next = head.Next.Next } }Dalam kod contoh ini, kami mula-mula membina senarai terpaut dengan 5 nod. Kemudian panggil fungsi terbalik untuk membalikkannya. Akhirnya, dengan merentasi nod, nod senarai terbalik terpaut dikeluarkan mengikut urutan. Melalui contoh kod di atas, kita dapat melihat bahawa pelaksanaan Golang bagi penyongsangan senarai terpaut adalah agak mudah dan biasa. Dengan menguasai operasi asas senarai terpaut dan penggunaan penunjuk, kami boleh melaksanakan operasi pembalikan senarai terpaut dengan mudah.
Atas ialah kandungan terperinci Bagaimana untuk membalikkan senarai pautan dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!