private Node add(Node result, Node currentResult){
        if(currentResult == null){
            return result;
        }
        if(result == null){
            return currentResult;
        }
        
        Node r1 = result.before;
        Node addResult = null;
        int carry = 0;
        while(r1 != null && currentResult != null){
            int r = r1.data + currentResult.data + carry;
            Node newNode = Node.newNode(r%10);
            if(addResult == null){
                addResult = newNode;
            }else{
                addResult.before = newNode;
                newNode.next = addResult;
                addResult = addResult.before;
            }
            carry = r/10;
            r1 = r1.before;
            currentResult = currentResult.before;
        }
        while(r1 != null){
            int r = r1.data + carry;
            Node newNode = Node.newNode(r%10);
            if(addResult == null){
                addResult = newNode;
            }else{
                addResult.before = newNode;
                newNode.next = addResult;
                addResult = addResult.before;
            }
            carry = r/10;
            r1 = r1.before;
        }
        while(currentResult != null){
            int r = currentResult.data + carry;
            Node newNode = Node.newNode(r%10);
            if(addResult == null){
                addResult = newNode;
            }else{
                addResult.before = newNode;
                newNode.next = addResult;
                addResult = addResult.before;
            }
            carry = r/10;
            currentResult = currentResult.before;
        }
        if(carry != 0){
            Node newNode = Node.newNode(carry);
            addResult.before = newNode;
            newNode.next = addResult;
            addResult = addResult.before;
        }
        
        while(addResult.next != null){
            addResult = addResult.next;
        }
        addResult.next = result;
        result.before = addResult;
        return result;
    }
Multiply two numbers in form of link list
Idea is to multiply one number from head2 with all numbers from head1.
This result is stored in currentResult. Pass this currentResult and any previous result from multiplication
and add them
src/com/interview/linklist/MultiplyTwoNumbersLinkList.java