My c++ solution for this

ListNode* newNode(int key)
{
ListNode* temp=new ListNode(key);
return temp;
}
ListNode* Solution::addTwoNumbers(ListNode* A, ListNode* B) {
ListNode* temp1=A;
ListNode* temp2=B;
//creating a dummy variable
ListNode* head=newNode(0);
ListNode* curr=head;
int carry=0;
while(temp1!=NULL || temp2!=NULL)
{
if(temp1!=NULL && temp2!=NULL)
{
curr->next=newNode((carry+temp1->val+temp2->val)%10);
if((carry+temp1->val+temp2->val)>9)
{
carry=1;
}
else
{
carry=0;
}
temp1=temp1->next;
temp2=temp2->next;
curr=curr->next;
}
if(temp1!=NULL && temp2==NULL)
{
curr->next=newNode((carry+temp1->val)%10);
if((carry+temp1->val)>9)
{
carry=1;
}
else
{
carry=0;
}
temp1=temp1->next;
curr=curr->next;
}
if(temp2!=NULL && temp1==NULL)
{
curr->next=newNode((carry+temp2->val)%10);
if((carry+temp2->val)>9)
{
carry=1;
}
else
{
carry=0;
}
temp2=temp2->next;
curr=curr->next;
}
}
if(carry==1)
{
curr->next=newNode(1);
}
head=head->next;
return head;
}

Click here to start solving coding interview questions