Heim > Backend-Entwicklung > Golang > Laufzeitfehler: Ungültige Speicheradresse oder Nullzeiger über Zyklus dereferenziert

Laufzeitfehler: Ungültige Speicheradresse oder Nullzeiger über Zyklus dereferenziert

WBOY
Freigeben: 2024-02-06 11:33:09
nach vorne
550 Leute haben es durchsucht

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

Frageninhalt

Ich versuche dieses Problem zu lösen: https://leetcode.com/problems/reverse-linked-list/description/?envtype=study-plan&id=level-1

Eingabe: head = [1,2,3,4,5]

Das ist mein 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
}
Nach dem Login kopieren

Nach der Ausführung meldete das Programm einen Fehler: Panik: Laufzeitfehler: Ungültige Speicheradresse oder Null-Zeiger-Dereferenzierung. Bitte erklären Sie mir, warum dieser Fehler auftritt

Eingabe: Kopf = [1,2,3,4,5]. Ich möchte viermal eine Schleife durchlaufen, bis head.next == nil ist. Doch etwas Unerwartetes geschah.


Richtige Antwort


Wenn head gleich Null ist -> wird head.next einen Fehler wie den von Ihnen ausgegebenen ausgeben

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
}
Nach dem Login kopieren

Noch einfacher ist:

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
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonLaufzeitfehler: Ungültige Speicheradresse oder Nullzeiger über Zyklus dereferenziert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage