You are given two non-empty linked lists representing two non-negative integers. 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.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
classSolution { private: ListNode * head = new ListNode(0); public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2){ auto result = head; int val, car=0; while (l1||l2){ val = (l1?l1->val:0) + (l2?l2->val:0) + car; result->next = new ListNode(val % 10); car = val / 10; result = result->next; if (l1) l1 = l1->next; if (l2) l2 = l2->next; } if (car != 0){ result->next = new ListNode(car); } return head->next; } };