简单题
class Solution {
public:
ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
ListNode *head = NULL;
ListNode *preNode = NULL;
int value = 0, carrier = 0;
while(l1 != NULL && l2 !=NULL) {
value = (l1->val + l2->val + carrier) % 10;
carrier = (l1->val + l2->val + carrier) / 10;
ListNode *curNode = new ListNode(value);
if(head == NULL) {
head = curNode;
}
if(preNode != NULL) {
preNode->next = curNode;
}
preNode = curNode;
l1 = l1->next;
l2 = l2->next;
}
while(l1 != NULL) {
value = (l1->val + carrier) % 10;
carrier = (l1->val + carrier) / 10;
ListNode *curNode = new ListNode(value);
if(head == NULL) {
head = curNode;
}
if(preNode != NULL) {
preNode->next = curNode;
}
preNode = curNode;
l1 = l1->next;
}
while(l2 != NULL) {
value = (l2->val + carrier) % 10;
carrier = (l2->val + carrier) / 10;
ListNode *curNode = new ListNode(value);
if(head == NULL) {
head = curNode;
}
if(preNode != NULL) {
preNode->next = curNode;
}
preNode = curNode;
l2 = l2->next;
}
if(carrier > 0) {
ListNode *curNode = new ListNode(carrier);
preNode->next = curNode;
}
return head;
}
};