class Solution {
public:
ListNode* reverse(ListNode*root) {
if (root == nullptr || root->next == nullptr)return root;
ListNode*ans = reverse(root->next);
root->next->next = root;
root->next = nullptr;
return ans;
}
ListNode* addInList(ListNode* head1, ListNode* head2) {
// write code here
ListNode*h1 = reverse(head1);
ListNode*h2 = reverse(head2);
int pre = 0;
ListNode*newnode = new ListNode(0);
ListNode*ans = newnode;
while (h1&&h2) {
int temp = h1->val + h2->val + pre;
int a = temp % 10;
pre = temp / 10;
newnode->next = new ListNode(a);
newnode = newnode->next;
h1 = h1->next;
h2 = h2->next;
}
if (h1 == nullptr) {
while (h2) {
int temp = h2->val + pre;
int a = temp % 10;
pre = temp / 10;
newnode->next = new ListNode(a);
newnode = newnode->next;
h2 = h2->next;
}
}
else if (h2 == nullptr) {
while (h1) {
int temp = h1->val + pre;
int a = temp % 10;
pre = temp / 10;
newnode->next = new ListNode(a);
newnode = newnode->next;
h1 = h1->next;
}
}
if(pre==1)newnode->next = new ListNode(1);
return reverse(ans->next);
}
};
倒序,相加进位然后再反序一下即可