class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* curNode1 = l1;
ListNode* curNode2 = l2;
ListNode* temp = NULL;
int k = 0, sum;
while (curNode1 != NULL && curNode2 != NULL) {
sum = curNode1->val + curNode2->val + k;
curNode1->val = sum % 10;
k = sum / 10;
temp = curNode1;
curNode1 = curNode1->next;
curNode2 = curNode2->next;
}
if (curNode2 != NULL) {
//curNode1 = temp;
temp->next = curNode2;
curNode1 = temp->next;
}
while (curNode1 != NULL && k != 0) {
sum = curNode1->val + k;
curNode1->val = sum % 10;
k = sum / 10;
temp = curNode1;
curNode1 = curNode1->next;
}
if (k == 1) temp->next = new ListNode(1);
return l1;
}
};
int main()
{
Solution sol;
vector<int> input1 = { 9,9}, input2 = {9,9,5,6};
ListNode *l1 = createListNode(input1);
ListNode *l2 = createListNode(input2);
printLinkedList(sol.addTwoNumbers(l1, l2));
return 0;
}