直接空缺补0,不然讨论起来很麻烦:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
if(l1==nullptr||l2==nullptr)
return (l1==nullptr?l2:l1);
ListNode *out = new ListNode(0), *cur;
cur = out;
int sign = 0;
while(l1!=nullptr||l2!=nullptr||sign==1){
int x = (l1==nullptr?0:l1->val);
int y = (l2==nullptr?0:l2->val);
ListNode* Node = new ListNode(0);
Node->val = (x+y+sign)%10;
cur->next = Node;
cur = Node;
if((x+y+sign)>=10)
sign = 1;
else
sign = 0;
if(l1 != nullptr)
l1 = l1->next;
if(l2 != nullptr)
l2 = l2->next;
}
cur = out->next;
delete out;
return cur;
}
};