/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) : val(x), next(nullptr) {}
* };
*/
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param l1 ListNode类
* @param l2 ListNode类
* @return ListNode类
*/
ListNode* ListAdd(ListNode* l1, ListNode* l2) {
ListNode dummy(0);
ListNode *curr = &dummy;
int carry = 0;
while(carry || l1 || l2){
int val1 = l1? l1->val: 0;
int val2 = l2? l2->val: 0;
int value = val1 + val2 +carry;
carry = value/10; //加int 表示循环内局部变量,一轮循环结束即销毁
value = value%10; //在循环内部声明了一个和外部同名的变量,内部变量会“遮蔽”外部变量,循环体内优先使用内部变量,外部变量不会被修改。
curr->next = new ListNode(value);
curr = curr->next;
l1 = l1 ? l1->next: nullptr; //更新处理的位
l2 = l2 ? l2->next: nullptr;
}
return dummy.next;
}
};