In Golang kann die Umkehrung einer verknüpften Liste mithilfe von Rekursion implementiert werden. In der rekursiven Funktion müssen wir zunächst den Knoten neben dem aktuellen Knoten als Parameter an die rekursive Funktion übergeben und dann den aktuellen Knoten auf den Knoten neben dem nächsten Knoten zeigen lassen. Schließlich wird der Rückgabewert der rekursiven Funktion zurückgegeben, der der neue Kopfknoten ist.
Das Folgende ist der Golang-Code, der Rekursion verwendet, um die verknüpfte Liste umzukehren:
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 }
Wir bestimmen zuerst, ob der Kopfknoten oder der nächste Knoten des Kopfknotens Null ist, und geben dann den Kopf direkt zurück. Andernfalls rufen wir die rekursive Funktion auf und übergeben den nächsten Knoten von head. Als nächstes lassen wir den nächsten Knoten von head auf head zeigen und setzen dann den nächsten Knoten von head auf Null. Abschließend wird der neue Kopfknoten newHead zurückgegeben.
Wir können den folgenden Testcode verwenden, um zu überprüfen, ob unsere Funktion korrekt ist:
// 测试代码 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() }
Die laufenden Ergebnisse sind wie folgt:
原链表: 1 2 3 4 5 反转后的链表: 5 4 3 2 1
Wie aus den laufenden Ergebnissen ersichtlich ist, hat unsere umgekehrt verknüpfte Listenfunktion reverseList das Original erfolgreich umgekehrt verknüpfte Liste.
Zusammenfassung:
In diesem Artikel wird der Golang-Code zum Umkehren der verknüpften Liste durch rekursive Funktionen vorgestellt. Der Code zum Umkehren der verknüpften Liste durch eine rekursive Funktion ist prägnant, leicht zu verstehen und leicht zu verstehen. In tatsächlichen Projekten können wir je nach Bedarf verschiedene Methoden zur Implementierung der umgekehrt verknüpften Liste auswählen.
Das obige ist der detaillierte Inhalt vonLassen Sie uns darüber sprechen, wie Golang Rekursion verwendet, um verknüpfte Listen umzukehren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!