链接:https://oj.leetcode.com/problems/add-two-numbers/
链表的大数加法
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution
{
public:
ListNode *addTwoNumbers(ListNode *l1,ListNode *l2)
{
ListNode *ans=new ListNode(0);
ListNode *pos=ans;
int tem=0;
int sign=0;
while(l1!=NULL&&l2!=NULL)
{
tem=l1->val+l2->val+sign;
pos->next=new ListNode(tem%10);
sign=tem/10;
pos=pos->next;
if(l1->next==NULL&&l2->next==NULL&&sign!=0)
{
pos->next=new ListNode(sign);
return ans->next;
}
if((l1->next==NULL&&l2->next!=NULL)||(l1->next!=NULL&&l2->next==NULL))
{
if(l2->next!=NULL)
pos->next=l2->next;
else if(l1->next!=NULL)
pos->next=l1->next;
pos=pos->next;
if(sign!=0)
{
while(pos!=NULL&&sign!=0)
{
tem=(pos->val+sign);
pos->val=tem%10;
sign=tem/10;
if(pos->next==NULL&&sign!=0)
{
pos->next=new ListNode(sign);
sign=0;
}
pos=pos->next;
}
}
return ans->next;
}
l1=l1->next;
l2=l2->next;
}
return ans->next;
}
};