from contextlib import nullcontext
# 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
        pre_node = None
        next_node = None
        #头插法,不断在列表头部插入新节点
        while head:
            next_node = head.next #保留当前节点后的节点
            head.next = pre_node  
            #当前节点的下一个节点,指向新链表的头结点(准备在新链表头部插入节点)

            pre_node = head       #新链表的头结点改变为当前节点(在新链表头部插入节点)  
            head = next_node      #恢复原链表的遍历  
        
        return pre_node