您的位置:首页 > 其它

链表求和(LintCode)

2017-10-21 09:46 197 查看

题目来源:LintCode

原题地址:http://www.lintcode.com/zh-cn/problem/add-two-numbers/

这题挺简单的,不过指针操作需要注意点,记得要初始化,我提交的时候忘记初始化,所以输出结果虽然一样,但是还是没有AC,提示Segmentation fault (core dumped),初始化就AC了。

本题的注意点主要在:最后一次加减完后,循环跳出得判断是否有进位,如果有则需要新建一个节点存储进位。

实现代码

ListNode *addLists(ListNode *l1, ListNode *l2)
{
if(!l1)
return l2;
if(!l2)
return l1;
ListNode *l3 = new ListNode(0); //初始化,不然 Segmentation fault (core dumped)
ListNode *head = l3;

int jinwei = 0;

while (l1 || l2)
{
int sum = 0;
if (l1)
{
sum += l1->val;
l1 = l1->next;
}
if (l2)
{
sum += l2->val;
l2 = l2->next;
}
sum += jinwei;
ListNode *tmpNode = new ListNode(sum % 10);
head->next = tmpNode;
head = head->next;
jinwei = sum / 10;
}
if (jinwei > 0)  //最后有进位,需要新建一个节点
{
ListNode *tmpNode = new ListNode(jinwei);
head->next = tmpNode;
head = head->next;
}
return l3->next;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: