def reorder_list(orig_list): dummy = ListNode(0) dummy.next = orig_list.head p = q = dummy # find the break point while p and p.next: p = p.next.next q = q.next # break the list r = q.next q.next = None second_half = LinkList() second_half.head = r # reverse the second half second_half.reverse_list() # merge p = orig_list.head r = second_half.head while r: p_next = p.next r_next = r.next r.next = p.next p.next = r r = r_next p = p_next del second_half return orig_list
def merge_two_lists_2(list_1, list_2): result = LinkList() result.head = merge_two_lists_helper(list_1.head, list_2.head) return result
def merge_sort_list(orig_list): nh = merge_sort_list_helper(orig_list.head) result_list = LinkList() result_list.head = nh return result_list