* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
/**
*
* @param head1 ListNode类
* @param head2 ListNode类
* @return ListNode类
*/
ListNode* reserve(ListNode* head){
ListNode* l=NULL;
ListNode* r=head->next;
while(head){
head->next=l;
l=head;
head=r;
r=head->next;
}
return l;
}
ListNode* addInList(ListNode* head1, ListNode* head2) {
// write code here
head1=reserve(head1);
head2=reserve(head2);
ListNode* cur;
ListNode* p;
ListNode* q;
cur=new ListNode(-1);
q=cur;
// return head1;
int k=0,f=0;
while(head1||head2||f){
if(head1&&head2){
if(head1->val+head2->val+f<10){
p=new ListNode(head1->val+head2->val+f);
q->next=p;
if(f)
f=0;
}
else {
p=new ListNode(head1->val+head2->val+f-10);
q->next=p;
f=1;
}
head1=head1->next;
head2=head2->next;
}
else if(head1&&!head2){
if(head1->val+f<10){
p=new ListNode(head1->val+f);
q->next=p;
if(f)
f=0;
}
else {
p=new ListNode(head1->val+f-10);
q->next=p;
f=1;
}
head1=head1->next;
}
else if(!head1&&head2){
if(head2->val+f<10){
p=new ListNode(head2->val+f);
q->next=p;
if(f)
f=0;
}
else {
p=new ListNode(head2->val+f-10);
q->next=p;
f=1;
}
head2=head2->next;
}
else if(!head1&&!head2&&f){
q->next=new ListNode(f);
f=0;
}
q=q->next;
}
return reserve(cur->next);
}
};