输入一个长度为n链表,反转链表后,输出新链表的表头。

数据范围: n1000
要求:空间复杂度 O(1) ,时间复杂度 O(n)

如当输入链表{1,2,3}时,
经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。
以上转换过程如下图所示:

示例1

输入:
{1,2,3}
返回值:
{3,2,1}

示例2

输入:
{}
返回值:
{}
说明:
空链表则输出空  
# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    # 返回ListNode
    def ReverseList(self, pHead):
        # write code here
        pre = None
        cur = pHead
        if pHead == None:
            return pHead
        while cur != None:
            tmp = cur.next
            cur.next = pre
            pre = cur
            cur = tmp
        return pre
#         递归版
#         if not pHead: return None
#         if not pHead.next: return pHead
#         headNode = self.ReverseList(pHead.next)
#         pHead.next.next= pHead
#         pHead.next = None
#         return headNode