主要是需要三个指针参与,然后一些细节
func reverseList(head *ListNode) *ListNode {
curr := head
if curr != nil { // 可能传入空链表
nextone := curr.Next
curr.Next = nil
for nextone != nil {
tmp := nextone.Next
nextone.Next = curr
curr = nextone
nextone = tmp
}
}
return curr
}
然后可以稍微优化一下减少一个判断,就是前驱节点其实最初可以设置为nil
func reverseList(head *ListNode) *ListNode {
var prev *ListNode // 显式初始化prev为nil
curr := head
for curr != nil {
nextone := curr.Next
curr.Next = prev
prev = curr
curr = nextone
}
return prev
}