Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
    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)

Ejemplo n.º 3
0
        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)