给定两个用链表表示的整数,每个节点包含一个数位。
这些数位是反向存放的,也就是个位排在链表头部。
编写求和,链表形式返回结果。
输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295
输出:2 -> 1 -> 9,即912
思路:一步步来
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)
{
// head是不移动的,p是在移动的,所以,最后返回的是head,这样才能返回整个链表结果,而不是一个node!!
ListNode * head = new ListNode;
ListNode * p = head;
int carry = 0;// 进位标志
// 当都为空指针了,退出循环
while(l1 || l2 || carry)
{
int sum = carry;
if (l1) {
sum = sum + l1->val;
l1 = l1 -> next;
}
if (l2) {
sum = sum + l2->val;
l2 = l2 -> next;
}
carry = sum / 10;
int newsum = sum % 10;
ListNode * tem = new ListNode(newsum);
p->next = tem;
p = p->next;
}
return head->next;
}
};