# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param head ListNode类 the head node
# @return ListNode类
#
class Solution:
    def sortInList(self , head: ListNode) -> ListNode:
        # write code here
        if head is None or head.next is None:   #特殊值处理
            return head

        l = []  #保存节点和节点数值,后面排序会用
        p = head    #遍历链表指针

        while p:     
            l.append([p,p.val])  #将节点p和p的值放到l中
            p = p.next

        l.sort(key=lambda x:x[1])  #按照l第二个元素(节点值)排序

        for i in range(len(l)):   #将l[i][0]节点对象串联起来
            if i < len(l) -1:       #注意最后一个节点的next赋给None
                l[i][0].next = l[i+1][0]
            else:
                l[i][0].next = None
        
        return l[0][0] # 返回l的第一个节点l[0][0]