Return a LL of added digits from two LLs

Node* addDigits(Node* l1, Node* l2){  
    Node* dummy = new Node();
    Node* temp = dummy;

    // go till carry or l1 or l2 exists
    int carry = 0;
    while(l1 || l2 || carry){
        int sum = 0;
        if(l1){
            sum += l1->data;
            l1 = l1->next;
        }
        if(l2){
            sum += l2->data;
            l2 = l2->next;
        }
        

        sum += carry;
        carry = sum/10;     //first digit

        // make a new node and chain it to earlier
        Node* ans = new Node(); 
        ans->data = sum%10;
        temp->next = ans;
        temp = temp->next;
    }
    return dummy->next;
}



Comments

Popular Posts