题目链接:https://leetcode-cn.com/problems/add-two-numbers/
代码如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* l = new ListNode(0);
ListNode* res = l;
int add = 0;
int a = l1->val, b = l2->val;
while(1) {
ListNode* pos = new ListNode(0);
pos->val = (a + b + add) % 10;
add = (a + b + add) / 10;
l->next = pos;
l = l->next;
printf("pos = %d, add = %d\n", pos->val, add);
if(l1->next == NULL && l2->next == NULL) {
break;
} else if(l1->next == NULL) {
a = 0;
l2 = l2->next;
b = l2->val;
} else if(l2->next == NULL) {
b = 0;
l1 = l1->next;
a = l1->val;
} else {
l1 = l1->next;
l2 = l2->next;
a = l1->val;
b = l2->val;
}
printf("a = %d, b = %d, add = %d\n", a, b, add);
}
if(add > 0) { //特判,针对 5+5这种情形
ListNode* more = new ListNode(add);
l->next = more;
}
res = res->next;
return res;
}
};