循环过程类似高精度加法
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
auto dummy = new ListNode(0), p = dummy;
int t = 0; //t表示进位
while (l1 || l2)
{
if (l1 && l2) t += l1->val + l2->val; //l1与l2都不为空的情况
else if (l1) t += l1->val; //l2为空
else t += l2->val; //l1为空
p = p->next = new ListNode(t % 10);
t /= 10;
if (l1) l1 = l1->next;
if (l2) l2 = l2->next;
}
if (t) p->next = new ListNode(1); //判断最高位是否进位
return dummy->next;
}
};