// @leet start
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseList(head *ListNode) *ListNode {
if head == nil {
return head
}
var p1, p2, p3 *ListNode
p3 = head
for ;p3.Next!=nil; {
p1 = p2
p2 = p3
p3 = p3.Next
p2.Next = p1
}
p3.Next = p2
return p3
}
// @leet end