我正在嘗試解決這個問題:https://leetcode.com/problems/reverse-linked-list/description/?envtype =study-plan&id=level-1
輸入:頭 = [1,2,3,4,5]
這是我的程式碼:
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 }
運行後,程式報錯:panic: 運行時錯誤: 無效的記憶體位址或 nil 指標取消引用。 請向我解釋為什麼會出現此錯誤
輸入:head = [1,2,3,4,5]。我希望循環 4 次,直到 head.next == nil。但出乎我意料的事情發生了。
如果 head 是 nil -> head.next 將出現像您給的錯誤
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 }
更簡單的是:
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 }
以上是運行時錯誤:無效的記憶體位址或 nil 指標透過循環取消引用的詳細內容。更多資訊請關注PHP中文網其他相關文章!