ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* head=new ListNode(-1);//存放结果的链表
ListNode* h=head;//移动指针
int sum=0;//每个位的加和结果
bool carry=false;//进位标志
while(l1!=NULL||l2!=NULL)
{
sum=0;
if(l1!=NULL)
{
sum+=l1->val;
l1=l1->next;
}
if(l2!=NULL)
{
sum+=l2->val;
l2=l2->next;
}
if(carry)
sum++;
h->next=new ListNode(sum%10);
h=h->next;
carry=sum>=10?true:false;
}
if(carry)
{
h->next=new ListNode(1);
}
return head->next;
}
拓展:
1、如果链表中的数字不是按逆序存储的呢?例如:(3 -> 4 -> 1) + (4 -> 6 -> 5) = 8 -> 0 -> 6,
结果:(3→4→1)+(4→6→5)=8→0→6
可以实现stack解决。
2、链表
我的笔记-链表