Ejemplo n.º 1
0
def merge_shallow(a_head, b_head, info=True):
    if(info):
        print instructions

    head = current = linked_lists.node()
    while(a_head and b_head): # the final node's .next is None
        if a_head.value > b_head.value:
            current.value = b_head.value
            b_head = b_head.Next
        else: # a_head.value <= b_head.value
            current.value = a_head.value
            a_head = a_head.Next
        new_node = linked_lists.node()
        current.Next = new_node
        current = new_node

    # One of the lists was empty, so shallow-copy the rest of the other
    non_empty = a_head or b_head
    if non_empty:
        current.value = non_empty.value # resolve dangling value
        current.Next = non_empty.Next # append and finish
    else: # this happens only when both were passed in as None
        head = None

    return head
Ejemplo n.º 2
0
def add():
    value = input("Enter the value of element:")
    if start.head == None:
        start.head = node(value)
        return

    loop = start.head
    while loop.next:
        loop = loop.next
    added = node(value)
    loop.next = added
Ejemplo n.º 3
0
def push(value):
    #print("[push operation]")
    #value = input("Enter the value of element:")
    if start.head == None:
        start.head = node(value)
        return

    loop = start.head
    while loop.next:
        loop = loop.next
    added = node(value)
    loop.next = added
Ejemplo n.º 4
0
def delete_duplicates(head):
    seen_values = {}
    my_node = head
    prev = None
    while my_node != None:
        try:
            x = seen_values[my_node.value] # If we don't get a key error here, we've seen the val before, so remove it.
            prev.Next = my_node.Next
            my_node = my_node.Next
        except KeyError:
            seen_values[my_node.value] = True
            prev = my_node
            my_node = my_node.Next
    return head


if __name__ == "__main__":
    vals = [1,2,3,4,3,5,6,1,7,8,9,3,10,2,11]
    head = node()
    my_node = head
    for each in vals:
        my_node.value = each
        if each != vals[-1]:
            my_node.Next = node()
            my_node = my_node.Next
    print("Linked list before deletions:")
    print(traverse(head, False))
    head = delete_duplicates(head)
    print("Linked list after deletions:")
    print(traverse(head, False))