/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) : val(x), next(nullptr) {}
* };
*/
#include <cstddef>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param l1 ListNode类
* @param l2 ListNode类
* @return ListNode类
*/
ListNode* ListAdd(ListNode* l1, ListNode* l2) {
// write code here
ListNode* prev = new ListNode(-1);
ListNode* p = prev;
ListNode* a = l1;
ListNode* b = l2;
int m = 0;
while (a != NULL || b != NULL) {
if (a != NULL && b != NULL) {
int sum = a->val + b->val + m;
com(sum,p,m);
a = a->next;
b = b->next;
} else if (a != NULL && b == NULL) {
int sum = a->val + m;
com(sum,p,m);
a = a->next;
} else {
int sum = b->val + m;
com(sum,p,m);
b = b->next;
}
}
if (m) {
ListNode* t = new ListNode(m);
p->next = t;
}
return prev->next;
}
void com(int &sum,ListNode* &p,int &m) {
m = sum / 10;
sum = sum % 10;
ListNode* t = new ListNode(sum);
p->next = t;
p = p->next;
}
};