LeetCodehot100-2 两数相加 class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { if (l1 nullptr) return l2; if (l2 nullptr) return l1; ListNode* head l1; // 保存头节点 ListNode* prev nullptr; // 记录上一个节点用于连接 int carry 0; // 同时遍历两个链表 while (l1 ! nullptr l2 ! nullptr) { int sum l1-val l2-val carry; l1-val sum % 10; carry sum / 10; prev l1; // 记录当前节点 l1 l1-next; l2 l2-next; } // 处理 l1 剩余节点 if (l1 ! nullptr) { while (l1 ! nullptr carry ! 0) { int sum l1-val carry; l1-val sum % 10; carry sum / 10; prev l1; l1 l1-next; } } // 处理 l2 剩余节点连接到原链表末尾 else if (l2 ! nullptr) { prev-next l2; // 连接剩余节点 while (l2 ! nullptr carry ! 0) { int sum l2-val carry; l2-val sum % 10; carry sum / 10; prev l2; l2 l2-next; } } // 处理最终进位 if (carry ! 0) { prev-next new ListNode(carry); } return head; } };