# class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head ListNode类 # @return ListNode类 # 学习中…… class Solution: def reversenode(self, root): pre = None while root: temp = root.next root.next = pre pre = root root = temp return pre def sortLinkedList(self , head: ListNode) -> ListNode: # 奇偶取出,偶反转 if not head or not head.next: return head odd = head even = head.next even_head = even while even and even.next: odd.next = even.next odd = odd.next even.next = odd.next even = even.next odd.next = None # 截断 # 如果even为None 说明是奇数列odd是最后一位,如果even.next为空说明是偶数 # 此时head已经发生变化 head是奇数列头节点 head.next 是奇数位了 newhead = self.reversenode(even_head) # 反转偶数链表 dummy = ListNode(0) cur = dummy while head and newhead: if head.val <= newhead.val: cur.next = head head = head.next else: cur.next = newhead newhead = newhead.next cur = cur.next cur.next = head if head else newhead # 最后如果奇数还有数连接到末尾否则是偶数 return dummy.next