Exemplo n.º 1
0
def add(first_number, second_number):
    first_itr = first_number.head
    second_itr = second_number.head
    sum_head = None
    sum_tail = None

    regroup = 0
    while first_itr != None and second_itr != None:
        sum = first_itr.data + second_itr.data
        sum += regroup
        regroup = math.trunc(sum / 10)
        digit = sum % 10

        if sum_head == None:
            sum_head = Node(digit)
            sum_tail = sum_head
        else:
            new_node = Node(digit)
            sum_tail.next = new_node
            sum_tail = new_node

        first_itr = first_itr.next
        second_itr = second_itr.next

    while first_itr != None:
        sum = first_itr.data + regroup
        regroup = math.trunc(sum / 10)
        digit = sum % 10

        if sum_head == None:
            sum_head = Node(digit)
            sum_tail = sum_head
        else:
            new_node = Node(digit)
            sum_tail.next = new_node
            sum_tail = new_node
        first_itr = first_itr.next

    while second_itr != None:
        sum = second_itr.data + regroup
        regroup = math.trunc(sum / 10)
        digit = sum % 10

        if sum_head == None:
            sum_head = Node(digit)
            sum_tail = sum_head
        else:
            new_node = Node(digit)
            sum_tail.next = new_node
            sum_tail = new_node
        second_itr = second_itr.next

    if regroup > 0:
        new_node = Node(regroup)
        sum_tail.next = new_node
        sum_tail = new_node

    sum_head.print_nodes()