Maison > développement back-end > Golang > Erreur d'exécution : adresse mémoire invalide ou pointeur nul déréférencé via un cycle

Erreur d'exécution : adresse mémoire invalide ou pointeur nul déréférencé via un cycle

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2024-02-06 11:33:09
avant
617 Les gens l'ont consulté

运行时错误:无效的内存地址或 nil 指针通过循环取消引用

Contenu de la question

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
}
Copier après la connexion

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.


Réponse correcte


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
}
Copier après la connexion

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
}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal