方法:遍历
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* a=l1;
ListNode* b=l2;
int more=0;
int temp=0;
ListNode* res,* frontRes,* finalRes;
int lena=0,lenb=0;
while(a || b){
if(a){
lena+=1;
a=a->next;
}
if(b){
lenb+=1;
b=b->next;
}
}
res=lena>lenb?l1:l2;
finalRes=res;
a=l1;
b=l2;
while(a || b ){
temp=0;
if(a){
temp+=a->val;
a=a->next;
}
if(b){
temp+=b->val;
b=b->next;
}
temp+=more;
more=temp/10;
temp=temp%10;
res->val=temp;
frontRes=res;
res=res->next;
}
if(more==1){
frontRes->next=new ListNode(more);
}
return finalRes;
}
};