Dalam golang, membalikkan senarai terpaut boleh dilaksanakan menggunakan rekursi. Dalam fungsi rekursif, pertama kita perlu menghantar nod seterusnya nod semasa ke dalam fungsi rekursif sebagai parameter, dan kemudian biarkan nod semasa menghala ke nod di sebelah nod seterusnya. Akhirnya, nilai pulangan fungsi rekursif dikembalikan, iaitu nod kepala baharu.
Berikut ialah kod golang yang menggunakan rekursi untuk membalikkan senarai terpaut:
type ListNode struct { Val int Next *ListNode } func reverseList(head *ListNode) *ListNode { if head == nil || head.Next == nil { return head } newHead := reverseList(head.Next) head.Next.Next = head head.Next = nil return newHead }
Kami mula-mula menentukan sama ada nod kepala atau nod seterusnya nod kepala adalah sifar, kemudian secara langsung kepala balik. Jika tidak, kami memanggil fungsi rekursif, melepasi nod kepala seterusnya. Seterusnya, kita biarkan nod kepala seterusnya menghala ke kepala, dan kemudian menetapkan nod kepala seterusnya kepada nil. Akhirnya, nod kepala baru newHead dikembalikan.
Kami boleh menggunakan kod ujian berikut untuk mengesahkan sama ada fungsi kami betul:
// 测试代码 func main() { node1 := ListNode{Val: 1} node2 := ListNode{Val: 2} node3 := ListNode{Val: 3} node4 := ListNode{Val: 4} node5 := ListNode{Val: 5} node1.Next = &node2 node2.Next = &node3 node3.Next = &node4 node4.Next = &node5 fmt.Println("原链表:") printList(&node1) newHead := reverseList(&node1) fmt.Println("反转后的链表:") printList(newHead) } func printList(head *ListNode) { for p := head; p != nil; p = p.Next { fmt.Printf("%d ",p.Val) } fmt.Println() }
Keputusan yang dijalankan adalah seperti berikut:
原链表: 1 2 3 4 5 反转后的链表: 5 4 3 2 1
Seperti yang dapat dilihat daripada hasil yang dijalankan, fungsi senarai terpaut terbalik kami reverseList telah berjaya membalikkan senarai terpaut asal.
Ringkasan:
Artikel ini memperkenalkan cara melaksanakan kod golang bagi membalikkan senarai terpaut melalui fungsi rekursif. Kod untuk membalikkan senarai terpaut melalui fungsi rekursif adalah ringkas, mudah difahami dan mudah difahami. Dalam projek sebenar, kita boleh memilih kaedah yang berbeza untuk melaksanakan senarai pautan terbalik mengikut keperluan.
Atas ialah kandungan terperinci Mari kita bincangkan tentang cara golang menggunakan rekursi untuk membalikkan senarai terpaut. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!