题意
链表整数加法。
题解
先在结果链表复制L1链表,然后再遍历加上L2。
代码
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *pre, *now, *head, *result;
//head = new ListNode(l1->val);
head = new ListNode(0);
pre = head;
now = NULL;
for (; l1 != NULL; l1 = l1->next)
{
if (now == NULL)
pre->next = new ListNode(l1->val);
now = pre->next->next;
pre = pre->next;
}
int sum = 0;
int carry = 0;
//head->val = sum % 10;
pre = head;
now = head->next;
for (; l2 != NULL || carry;)
{
if (now == NULL)
{
if (l2 == NULL)
sum = carry;
else
sum = l2->val + carry;
pre->next = new ListNode(sum % 10);
carry = sum / 10;
}
else
{
if (l2 == NULL)
sum = now->val + carry;
else
sum = now->val + l2->val + carry;
now->val = sum % 10;
carry = sum / 10;
}
now = pre->next->next;
pre = pre->next;
if (l2 != NULL)
l2 = l2->next;
}
result = head->next;
delete head;
return result;
}
};