思路
定义三个指针,每次 'p2.next重定向到p1' 后三个指针分别后移一个,因为p3只是用来后移p2的,所以当p2.next==nil时主流程结束。最后修改head.next=nil,head=p2。
图示
(摘自:https://www.jianshu.com/p/f7534f8d7bf2)
伪代码
func ReverseLinkedList(head *Node) {
p1, p2, p3 := head, head.next, head.next.next
for {
if p2.next == nil {
break
}
p2.next = p1
p1 = p2
p2 = p3
p3 = p3.next
}
head.next = nil
head = p2
}