Rumah >pembangunan bahagian belakang >Golang >Ralat masa jalan: Alamat memori tidak sah atau penunjuk sifar dinyahrujuk melalui kitaran
Saya cuba menyelesaikan masalah ini: https://leetcode.com/problems/reverse-linked-list/description/?envtype=study-plan&id=level-1
Input: kepala = [1,2,3,4,5]
Ini kod saya:
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 }
Selepas dijalankan, program melaporkan ralat: panik: Ralat masa jalan: Alamat memori tidak sah atau penolakan penunjuk tiada. Tolong jelaskan kepada saya mengapa ralat ini berlaku
Input: kepala = [1,2,3,4,5]. Saya mahu gelung 4 kali sehingga head.next == tiada. Tetapi sesuatu yang tidak dijangka berlaku.
Jika kepala tiada -> seterusnya akan memberikan ralat seperti yang anda berikan
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 }
Lebih mudah ialah:
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 }
Atas ialah kandungan terperinci Ralat masa jalan: Alamat memori tidak sah atau penunjuk sifar dinyahrujuk melalui kitaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!