/**
* 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 *p=l1, *q=l2, *l3=new ListNode(-1), *x=l3;
int c=0; //进位
int sum;
while(p||q){
sum=0; //记得每次sum归0
if(p){
sum+=p->val;
p=p->next; //如果不为空,再往后
}
if(q){
sum+=q->val;
q=q->next;
}
sum+=c;
if(c==1) c=0;
if(sum>=10) c=1;
x->next=new ListNode(sum%10);
x=x->next;
}
if(c==1) x->next=new ListNode(1); //最后有进位,要添一个结点
return l3->next; //返回l3->next,l3相当于头结点
}
};