class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* out = new ListNode(0);
// 保存头节点
ListNode* out1 = out;
int val_first = 0;
int val_second = 0;
while (l1 != nullptr || l2 != nullptr){
// 非常关键
int n1 = l1 ? l1->val : 0;
int n2 = l2 ? l2->val : 0;
//
int cur_out = n1 + n2 + val_second;
val_first = cur_out % 10;
if (cur_out >= 10) {
val_second = cur_out / 10;
}
else {
val_second = 0;
}
out->next = new ListNode(val_first);
out = out->next;
if (l1) {
l1 = l1->next;
}
if (l2) {
l2 = l2->next;
}
}
if (val_second > 0) {
out->next = new ListNode(val_second);
}
return out1->next;
}
};
注意链表中
int n1 = l1 ? l1->val : 0;
int n2 = l2 ? l2->val : 0;
if (l1) {
l1 = l1->next;
}
if (l2) {
l2 = l2->next;
}
这样的写法