/**
* 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 *answer=new ListNode();
ListNode *rear=answer;
ListNode *p=l1;
ListNode *q=l2;
int Cout=0;
while(p&&q){
ListNode *s=new ListNode();
s->val=(Cout+p->val+q->val)%10;
Cout=(Cout+p->val+q->val)/10;
s->next=rear->next;
rear->next=s;
rear=s;
p=p->next;
q=q->next;
}
if(p==nullptr){
while(q){
ListNode *s=new ListNode();
s->val=(Cout+q->val)%10;
Cout=(Cout+q->val)/10;
s->next=rear->next;
rear->next=s;
rear=s;
q=q->next;
}
}
if(q==nullptr){
while(p){
ListNode *s=new ListNode();
s->val=(Cout+p->val)%10;
Cout=(Cout+p->val)/10;
s->next=rear->next;
rear->next=s;
rear=s;
p=p->next;
}
}
if(Cout==1){
ListNode *s=new ListNode();
s->val=1;
s->next=nullptr;
rear->next=s;
rear=s;
}
ListNode *s=answer;
answer=s->next;
delete s;
return answer;
};
};