def create_list(): ll = LinkedList() ll.append(1) ll.append(3) ll.append(4) ll.append(10) ll.append(5) ll.append(6) return ll
def create_list(): ll = LinkedList() ll.append(1) ll.append(1) # ll.append(3) # ll.append(4) # ll.append(10) # ll.append(4) # ll.append(3) # ll.append(2) # ll.append(1) return ll
def create_list(): ll = LinkedList() ll.append(1) ll.append(2) ll.append(3) ll.append(4) ll.append(5) ll.append(6) # ll.append(7) # ll.append(8) return ll
def create_list(): ll = LinkedList() ll.append(1) cycle_node = ll.tail ll.append(2) ll.append(3) ll.append(4) ll.append(5) ll.append(6) ll.append(7) ll.append(8) ll.tail.next = cycle_node return ll
def merge_sorted_list_two(node_one, node_two): if node_one is None: return node_two if node_two is None: return node_one temp_node = node_one #记录较小的节点 if node_one.data < node_two.data: temp_node.next = merge_sorted_list_two(node_one.next, node_two) else: temp_node = node_two temp_node.next = merge_sorted_list_two(node_one, node_two.next) return temp_node if __name__ == '__main__': l1 = LinkedList() l1.append(2) l1.append(5) l1.append(8) l1.append(1) l1.append(12) l1.append(5) l1.append(10) l2 = LinkedList() # result = merge_sorted_list(l1.head, l2.head) result = sort_linked_list(l1.head) l2.head = result l2.print_list_two()
node_list[root_index] = node_list[node_index] root_index = node_index node_index = (root_index << 1) + 1 node_list[root_index] = temp_node if __name__ == '__main__': # result = merge_sorted_list(l1.head, l2.head) ll_list = [] node_list = [] for i in range(10): ll_list.append(LinkedList()) for i in range(50): if i in [13, 36, 18, 19, 15, 25, 35, 45]: continue ll_list[i % 10].append(i) for i in range(10): node_list.append(ll_list[i].head) for i in range(10): ll_list[i].print_list_two() node_list.reverse() result = merge_k_sorted_lists_two(node_list) lll = LinkedList() lll.head = result lll.print_list_two()
return -1 #根据相遇节点,求出环的入口节点,即为交叉点 temp_node_one = node_one temp_node_two = meeting_node while temp_node_two != temp_node_one: temp_node_one = temp_node_one.next temp_node_two = temp_node_two.next return temp_node_one.data #求的相遇点,遍历一遍即可知道环的长度。 #求的入环点,从头节点遍历到入环点的长度加上环的长度,等于链表的长度 if __name__ == '__main__': ll = LinkedList() # ll.append(1) ll.append(2) # ll.append(3) l1 = LinkedList() l1.append(10) l1.append(11) # l1.append(12) l1.tail.next = ll.head l1.print_list_two() l2 = LinkedList() l2.append(4) l2.tail.next = ll.head l2.print_list_two()