See More

#include #include using namespace std; struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) { if (l1 == NULL) { return l2; } if (l2 == NULL) { return l1; } ListNode * vhead = new ListNode(-1); ListNode *result = vhead; ListNode *cur1 = l1; ListNode *cur2 = l2; int increment = 0; while ((l1 != NULL) && (l2 != NULL)) { int res = l1->val + l2->val + increment; result->next = new ListNode(res%10); increment = res/10; result = result->next; l1 = l1->next; l2 = l2->next; } while (l1 != NULL) { int res = l1->val + increment; result->next = new ListNode(res%10); increment = res/10; result = result->next; l1 = l1->next; } while (l2 != NULL) { int res = l2->val + increment; result->next = new ListNode(res%10); increment = res/10; l2 = l2->next; result = result->next; } if (increment > 0) { result->next = new ListNode(1); } result = vhead->next; delete vhead; return result; } int main () { return 0; }