# 将两个链表相乘,返回一个新链表 def multiplyLinkedList(the_list1: LinkedList, the_list2: LinkedList) -> LinkedList: if the_list1.length() < the_list2.length(): my_list1 = the_list2 my_list2 = getFragment(the_list1, 0, the_list1.length() - 1) else: my_list1 = the_list1 my_list2 = getFragment(the_list2, 0, the_list2.length() - 1) node_pointer2 = my_list2.head_node result = _multiplyWithSingleDigit(my_list1, node_pointer2.getData()) index = 0 while node_pointer2.getNextNode(): node_pointer2 = node_pointer2.getNextNode() index += 1 temp = _multiplyWithSingleDigit(my_list1, node_pointer2.getData()) for i in range(0, index): temp.app_start(Node(0)) result = plusLinkedList(result, temp) return result if __name__ == "__main__": list1 = initializeLinkedList(6) print(list1) print("*") list2 = initializeLinkedList(7) print(list2) print("=") print(multiplyLinkedList(list1, list2)) pass
return my_linked_list mid = length // 2 cut1 = mergeSort(getFragment(my_linked_list, 0, mid - 1)) cut2 = mergeSort( getFragment(my_linked_list, mid, my_linked_list.length() - 1)) node_pointer1 = cut1.head_node node_pointer2 = cut2.head_node cut3 = LinkedList() while node_pointer1 is not None and node_pointer2 is not None: data1 = node_pointer1.getData() data2 = node_pointer2.getData() if data1 < data2: cut3.app_end(cut1.pop(cut1.getIndex(node_pointer1))) node_pointer1 = cut1.head_node else: cut3.app_end(cut2.pop(cut2.getIndex(node_pointer2))) node_pointer2 = cut2.head_node combineList(cut3, cut1) combineList(cut3, cut2) return cut3 if __name__ == "__main__": linklist = initializeLinkedList(50) linklist = mergeSort(linklist) print("排序后:") print(linklist) linklist.printAll() pass
else: low = 0 high = my_linked_list.length() - 1 while low <= high: mid = (low + high) // 2 node_pointer3 = my_linked_list.getNode(mid) if node_pointer3.getData() > number: high = mid - 1 elif node_pointer3.getData() < number: low = mid + 1 else: return mid return -1 if __name__ == "__main__": start1 = time.perf_counter() linkedList = initializeLinkedList(400) linkedList = mergeSort(linkedList) linkedList.printAll() end1 = time.perf_counter() print("用时{0}秒".format(end1 - start1)) num = input("请输入要查询的值:") start2 = time.perf_counter() index = halfSearch(linkedList, int(num)) print("索引为:", index) print("该节点信息:", linkedList.getNode(index)) end2 = time.perf_counter() print("用时{0}秒".format(end2 - start2)) pass
exchangeNode(my_linked_list, 0) else: for i in range(1, my_linked_list.length()): j = i while j >= 1: node_pointer1 = my_linked_list.getNode(j) node_pointer2 = my_linked_list.getNode(j - 1) if node_pointer1.getData() < node_pointer2.getData(): exchangeNode(my_linked_list, j - 1) j -= 1 else: break def insertSort(my_linked_list): """方法入口""" _insertSort(my_linked_list, 1, 1) if __name__ == "__main__": start = time.perf_counter() linked_list = initializeLinkedList(1000) print("插入排序前:") linked_list.printAll() insertSort(linked_list) print("插入排序后:") linked_list.printAll() end = time.perf_counter() print("用时{0}秒.".format(end - start)) pass