就地反转法

开始新表头:newHead=None,切断head与head->next,记得保存temp = head->next,因为最后head节点处理完(与newHead连接),要跳到下一个节点(即该节点temp),而newHead与head连接完也跟head一样,需要后移一个节点(即原head节点)。

# def __init__(self, x):
#     self.val = x
#     self.next = None
# 
# @param head ListNode类 
# @return ListNode类
#
class Solution:
    def ReverseList(self , head: ListNode) -> ListNode:
        # 新表头
        newHead = None
        # 开始反转
        while head:
            # 记录head.next
            temp = head.next
            # head与newHead连接
            head.next = newHead
            # newHead后移一个节点
            newHead = head
            # head也要后移一个节点
            head = temp
        return newHead