struct ListNode {
int val;
ListNode *next;
ListNode() : val(0), next(nullptr) {}
ListNode(int x) : val(x), next(nullptr) {}
ListNode(int x, ListNode *next) : val(x), next(next) {}
};
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* p1 = l1;
ListNode* p2 = l2;
ListNode* newHeader = new ListNode();
ListNode* p3 = newHeader;
int tmp = 0;
while(p1 || p2)
{
int num1 = p1 ? p1->val : 0;
int num2 = p2 ? p2->val : 0;
int sum = num1 + num2 + tmp;
tmp = sum/10;
ListNode* tmpNode = new ListNode();
tmpNode->val = sum % 10;
p3->next = tmpNode;
p3 = tmpNode;
if (p1)
{
p1 = p1->next;
}
if(p2)
{
p2 = p2->next;
}
}
if(tmp > 0)
{
ListNode* tmpNode = new ListNode();
tmpNode->val = tmp;
p3->next = tmpNode;
}
return newHeader->next;
}
};
09-22