En Golang, l'inversion d'une liste chaînée peut être implémentée en utilisant la récursivité. Dans la fonction récursive, nous devons d'abord transmettre le nœud à côté du nœud actuel dans la fonction récursive en tant que paramètre, puis laisser le nœud actuel pointer vers le nœud à côté du nœud suivant. Enfin, la valeur de retour de la fonction récursive est renvoyée, qui est le nouveau nœud principal.
Ce qui suit est le code golang qui utilise la récursion pour inverser la liste chaînée :
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 }
Nous déterminons d'abord si le nœud principal ou le nœud suivant du nœud principal est nul, puis renvoyons head directement. Sinon, on appelle la fonction récursive, en passant au nœud suivant de la tête. Ensuite, nous laissons le nœud suivant de head pointer vers head, puis définissons le nœud suivant de head sur nil. Enfin, le nouveau nœud principal newHead est renvoyé.
Nous pouvons utiliser le code de test suivant pour vérifier si notre fonction est correcte :
// 测试代码 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() }
Les résultats d'exécution sont les suivants :
原链表: 1 2 3 4 5 反转后的链表: 5 4 3 2 1
Comme le montrent les résultats d'exécution, notre fonction de liste chaînée inversée reverseList a réussi à inverser l'original liste chaînée.
Résumé :
Cet article présente le code Golang permettant d'inverser la liste chaînée via des fonctions récursives. Le code pour inverser la liste chaînée via une fonction récursive est concis, facile à comprendre et facile à comprendre. Dans les projets réels, nous pouvons choisir différentes méthodes pour implémenter la liste chaînée inversée en fonction de nos besoins.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!