代码拉取完成,页面将自动刷新
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode *l1, ListNode *l2)
{
ListNode *head = nullptr; //定义头结点为空
ListNode *tail = nullptr;
int carry = 0, sum = 0;
while (l1 || l2){
int n1 = l1 ? l1->val : 0; //l1有value, 取出给n1
int n2 = l2 ? l2->val : 0;
sum = n1 + n2 + carry;
if (!head){ // 头结点为空,新链表没有节点
head = tail = new ListNode(sum % 10); //插入新节点
} else { //有头结点,后续节点插入
tail->next = new ListNode(sum % 10); //尾节点后插入
tail = tail->next;
}
carry = sum / 10; //进位值
if (l1){ // l1还有节点继续访问
l1 = l1->next;
}
if (l2){
l2 = l2->next;
}
}
if (carry > 0) {// 最后一个进位值放到链表最
tail->next = new ListNode(carry);
tail = tail->next;
}
return head; // 返回头结点即可
}
};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。