题目:给定两个用链表表示的整数,每一个节点包含一个数位。这些数式反向存放的,也就是个位排在链表首部,编写函数对这两个整数求和,并用链表形式返回结果。
示例:
输入:(7->1->6)和(5->9->2)
即617+295
输出:2->1->9 即912
struct ListNode
{
int val;
ListNode* next;
ListNode(int x):val(x),next(NULL){}
};
class Solution
{
public:
ListNode* TwoList_Sum(ListNode* l1,ListNode* l2)
{
ListNode* head=new ListNode(-1);
ListNode* p=head;
ListNode* p1=l1;
ListNode* p2=l2;
int sum=0;
int flag=0;
while(p1 || p2 || flag)
{
sum=0;
if(p1)
{
sum+=p1->val;
p1=p1->next;
}
if(p2)
{
sum+=p2->val;
p2=p2->next;
}
sum+=flag;
ListNode* temp=new ListNode(sum % 10);
p->next=temp;
flag=sum / 10;
p=p->next;
}
return head->next;
}
};