#p1指向上一个node ,p当前node ,tmp下一个node
#p1初始为None,p初始为head
#当p.next非None时循环,下一个node暂存到tmp,p.next改为p1,p1和p向后移动,判断进入下一次循环
#当P.next为None时结束循环,p.next =p1 ,p就是反转链表的head

# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param head ListNode类 
# @return ListNode类

class Solution:
    def ReverseList(self , head: ListNode) -> ListNode:
        # write code here
        if not head:
            return head
        else:
            p = head
            p1 = None
            while p.next:
                tmp = p.next
                p.next = p1
                p1 = p
                p = tmp
            p.next = p1
            return p