Maison >développement back-end >Golang >Erreur d'exécution : adresse mémoire invalide ou pointeur nul déréférencé via un cycle
J'essaie de résoudre ce problème : https://leetcode.com/problems/reverse-linked-list/description/?envtype=study-plan&id=level-1
Entrée : tête = [1,2,3,4,5]
Voici mon code :
func reverseList(head *ListNode) *ListNode { var prev *ListNode prev = nil for head.Next != nil { head, head.Next, prev = head.Next, prev, head } if head.Next == nil { head.Next = prev } return head }
Après l'exécution, le programme a signalé une erreur : panique : erreur d'exécution : adresse mémoire invalide ou déréférencement de pointeur nul. Veuillez m'expliquer pourquoi cette erreur se produit
Entrée : tête = [1,2,3,4,5]. Je veux boucler 4 fois jusqu'à ce que head.next == nil. Mais quelque chose d’inattendu s’est produit.
Si head est nul -> head.next donnera une erreur comme celle que vous avez donnée
func reverselist(head *listnode) *listnode { var prev *listnode prev = nil for head != nil && head.next != nil { head, head.next, prev = head.next, prev, head } if head != nil && head.next == nil { head.next = prev } return head }
Encore plus simple, c'est :
func reverseList(head *ListNode) *ListNode { var prev *ListNode prev = nil for head != nil { head, head.Next, prev = head.Next, prev, head } if head == nil { head = prev } return head }
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!