def MergeSortList1(l1, l2): if l1 == None: return l2 if l2 == None: return l1 # 取头结点 head = cur = None if l1.value < l2.value: cur = head = l1 l1 = l1.next else: cur = head = l2 l2 = l2.next # 每串联一个节点当前节点cur往后移动 while l1 != None and l2 != None: if l1.value < l2.value: cur.next = l1 l1 = l1.next else: cur.next = l2 l2 = l2.next cur = cur.next # 当前游标指针往后移动 List.Print(head) if l1 != None: cur.next = l1 if l2 != None: cur.next = l2 return head
while cur != None: if cur.value <= key: if left_list == None: left_head = left_list = cur else: left_list.next = cur left_list = cur else: if right_list == None: right_head = right_list = cur else: right_list.next = cur right_list = cur cur = cur.next #拼接左右链表 right_list.next = None left_list.next = right_head return left_head l2 = List.Node(6) l2.next = List.Node(1) l2.next.next = List.Node(4) l2.next.next.next = List.Node(3) l2.next.next.next.next = List.Node(5) l2.next.next.next.next.next = List.Node(1) re=PartitionList(l2, 3) List.Print(re)
head.next = None # 多个节点且在尾部,从头开始删除 else: tmp = cur = head while cur.value != toDel.value: # 语言问题拷贝过后指针已经发生变化,所以用值代替 tmp = cur cur = cur.next print('------', tmp.value, cur.value, toDel.value) tmp.next == None a, b, c, d = List.Node(1), List.Node(2), List.Node(3), List.Node(4) head = a head.next = b head.next.next = c head.next.next.next = d List.Print(head) print('del 3') DeleteNode(head, c) List.Print(head) print('del 4') DeleteNode(head, d) List.Print(head) print('del 1') DeleteNode(head, a) List.Print(head) print('del 2') DeleteNode(head, b) List.Print(head)