反转一般用三个节点最好处理 前一个节点 ,当前节点,后一个节点
最简洁版本
func reverseList(head *ListNode) *ListNode {
var pre *ListNode
curr := head
for curr!= nil{//当为空表示迭代结束
//前一个值 ,当前值,后一个值
pre,curr,curr.Next = curr,curr.Next,pre
}
return pre
}
func revertNode(head *ListNode)*ListNode{
var pre *ListNode
curr :=head
for curr!= nil{
next := curr.Next
curr.Next = pre
pre = curr
curr = next
}
return pre
}
递归
func revertNode(head *ListNode)*ListNode{
if head==nil||head.Next==nil {
return head
}
next := head.Next
n := revertNode(next)
next.Next = head
head.Next = nil
return n
}