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

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBnach vorne
2024-02-06 11:33:09583Durchsuche

运行时错误:无效的内存地址或 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 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
}

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
}

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen