/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: int convert(ListNode* t) { if(t!=NULL) return t->val; else return 0; } ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode* res=new ListNode((convert(l1)+convert(l2))%10); ListNode* temp1=l1; ListNode* temp2=l2; ListNode* temp=res; int y=(convert(l1)+convert(l2))/10; int v; int q1,q2; bool f1=1,f2=1; while(1) { if(f1) { if(temp1->next==NULL) { q1=0; f1=0; } else q1=temp1->next->val; } if(f2) { if(temp2->next==NULL) { q2=0; f2=0; } else q2=temp2->next->val; } if(f1==0&&f2==0) break; v=q1+q2+y; temp->next=new ListNode(v%10); y=v/10; temp=temp->next; if(f1!=0) temp1=temp1->next; if(f2!=0) temp2=temp2->next; } if(y!=0) temp->next=new ListNode(y); return res; } };