你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,
使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。
给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null
ListNode *addLists(ListNode *l1, ListNode *l2)
{
return fun(l1, l2, 0);
}
ListNode* fun(ListNode* l1, ListNode* l2, int carry)
{
if (!l1) {
l1 = new ListNode(0);
}
l1->val += carry + (l2 ? l2->val : 0);
carry = l1->val / 10;
l1->val %= 10;
if (carry || l1->next || ( l2 &&l2->next)) {
l1->next = fun(l1->next, l2 ? l2->next : NULL, carry);
}
return l1;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。