Question :
Add Two Numbers
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
class Solution {
public:
ListNode *addTwoNumbers(ListNode *l1, ListNode *l2)
{
ListNode* phead =new ListNode(0);
ListNode* pTail =phead;
//int *temp ;
int carry = 0;
if(!l1)
return l2;
if(!l2)
return l1;
while(l1&&l2)
{
int val= l1->val+l2->val+carry;
carry = val/10;
pTail->next = new ListNode(val%10);
pTail = pTail->next;
l1 = l1->next;
l2 = l2->next;
}
ListNode* left = l1?l1:l2;
while(left)
{
int val= left->val+carry;
carry = val/10;
pTail->next= new ListNode(val%10);
pTail = pTail->next;
left = left->next;
}
if(carry)
{
pTail->next= new ListNode(carry);
pTail->next->next = NULL;
}
return phead->next;
}
};