예제 #1
0
            slow = slow.next
            fast = fast.next.next
        ReverseHead = self.__reverse(slow.next)
        slow.next = None
        ptr1 = head
        ptr2 = ReverseHead
        while ptr1 and ptr2:
            tmp1 = ptr1.next
            tmp2 = ptr2.next
            ptr1.next = ptr2
            ptr2.next = tmp1
            ptr1 = tmp1
            ptr2 = tmp2

    def __reverse(self, head: ListNode) -> ListNode:
        dummy = ListNode(0)
        dummy.next = head
        ptr = head
        while ptr and ptr.next:
            tmp = ptr.next
            ptr.next = tmp.next
            tmp.next = dummy.next
            dummy.next = tmp
        return dummy.next


str = "12345"
head = createList(str)
sol = Solution()
sol.reorderList(head)
print("123")
    kPointer.next = kPointer.next.next
    return head


def move_middle_to_head(head):

    prev = None
    slow = head
    fast = head.next if head else None
    if not fast or not slow:
        return head

    while (fast):
        prev = slow
        slow = slow.next
        fast = fast.next.next if fast.next else fast.next

    prev.next = slow.next
    slow.next = head

    return slow


arr1 = [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [1], [1, 2],
        [1, 2, 3], [], [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6, 7]]

for arr in arr1:
    head = createList(arr)
    head = move_middle_to_head(head)
    print(extractList(head))