2
* Definition for singly-linked list.6
* ListNode() : val(0), next(nullptr) {}7
* ListNode(int x) : val(x), next(nullptr) {}8
* ListNode(int x, ListNode *next) : val(x), next(next) {}13
ListNode *reverse(ListNode *l1) {14
if (l1 == NULL || l1->next == NULL) {17
ListNode *ans = reverse(l1->next);22
ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {23
ListNode *l11 = reverse(l1);24
ListNode *l22 = reverse(l2);25
ListNode *dummy = new ListNode(0);26
ListNode *curr = dummy;29
while (l11 || l22 || carry != 0) {30
int x = l11 ? l11->val : 0;31
int y = l22 ? l22->val : 0;34
curr->next = new ListNode(sum % 10);36
l11 = l11 ? l11->next : nullptr;37
l22 = l22 ? l22->next : nullptr;40
dummy = reverse(dummy);