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* p1 = l1;
ListNode* p2 = l2;
ListNode* newHeader = new ListNode();
ListNode* p3 = newHeader;
int tmp = 0;
while(p1 || p2)
{
int num1 = p1 ? p1->val : 0;
int num2 = p2 ? p2->val : 0;
int sum = num1 + num2 + tmp;
tmp = sum/10;
ListNode* tmpNode = new ListNode();
tmpNode->val = sum % 10;
p3->next = tmpNode;
p3 = tmpNode;
if (p1)
{
p1 = p1->next;
}
if(p2)
{
p2 = p2->next;
}
}
if(tmp > 0)
{
ListNode* tmpNode = new ListNode();
tmpNode->val = tmp;
p3->next = tmpNode;
}
return newHeader->next;
}
};
链表中两数相加
最新推荐文章于 2024-12-03 22:17:05 发布
这篇博客详细介绍了如何使用C++实现两个链表表示的数字相加。通过定义ListNode结构体和Solution类,实现了将两个链表对应的数字节点逐位相加,并处理进位问题。最后返回新的链表表示的和数。
3590

被折叠的 条评论
为什么被折叠?



