题目地址:https://leetcode-cn.com/problems/add-two-numbers/
用一个carry记下进位就行,像加法器的原理一样。
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* result = new ListNode(0);//设一个头节点,这样方便初始化
ListNode* t=result;
ListNode* p=l1;
ListNode* q=l2;
int carry=0;
while(p!=NULL||q!=NULL)
{
int x=(p!=NULL)?p->val:0;
int y=(q!=NULL)?q->val:0;
int tmp=x+y+carry;
carry=tmp/10;
t->next=new ListNode(tmp%10);
t=t->next;
if(p!=NULL) p=p->next;
if(q!=NULL) q=q->next;
}
if(carry!=0)
{
t->next=new ListNode(carry);
}
return result->next;
}