Very Simple and short solution


#1

void addnode(int &sum,ListNode* &dummy)
{
ListNode n=new ListNode(sum);
dummy->next=n;
dummy=dummy->next;
}
ListNode
Solution::addTwoNumbers(ListNode* temp1, ListNode* temp4)
{
int carry=0;
int sum=0;
ListNode *dummy=new ListNode(0);
ListNode *result=dummy;
while(temp1!=NULL || temp4!=NULL)
{
if(temp1==NULL && temp4!=NULL)
{
sum=(temp4->val+carry);
carry=sum/10;
sum=sum%10;
temp4=temp4->next;
}
else if(temp1!=NULL && temp4==NULL)
{
sum=(temp1->val+carry);
carry=sum/10;
sum=sum%10;
temp1=temp1->next;
}
else
{
sum=(temp1->val+temp4->val+carry);
carry=sum/10;
sum=sum%10;
temp1=temp1->next;
temp4=temp4->next;
}
addnode(sum,dummy);
}

result=result->next;
if(carry!=0)
{
    addnode(carry,dummy);
}
return result;

}