Merge sort of a linked list """ from linked_list import Node node = Node() node.insert_at_beginning(5) node.insert_at_beginning(2) node.insert_at_beginning(1) node.insert_at_beginning(10) node.insert_at_beginning(-1) node.insert_at_beginning(30) node.insert_at_beginning(12) node.insert_at_beginning(6) node.print_list() def get_middle(head): slowptr = head fastptr = head while fastptr and fastptr.next: slowptr = slowptr.next fastptr = fastptr.next.next return slowptr def sorted_merge(left, right): if not left: return right
node = Node(current_node.data) aux_list.next = node aux_list = aux_list.next flag.next = current_node.next else: flag = current_node current_node = current_node.next flag.next = aux_list2 return link_list node1 = Node(3) node2 = Node(5) node1.next = node2 node3 = Node(8) node2.next = node3 node4 = Node(5) node3.next = node4 node5 = Node(10) node4.next = node5 node6 = Node(2) node5.next = node6 node7 = Node(1) node6.next = node7 node1.print_list() print 'partition' node1 = partition(node1, 5) node1.print_list()