您的位置:首页 > 其它

Day6-(链表表示)两个数相加

2016-12-24 23:41 169 查看

题目

(链表表示)两个数相加

给定了表示非负数的两个链表。数字都是以逆序存储的,并且每个节点都包含一个单个的数字。将两个数相加,并且以一个链表的形式返回结果:

输入:(2->4->3) + (5->6->4)

输出:7->0->8

本题和上一题是一样的,区别在于上一题是基于数组的,而本题是基于链表的。把数组操作运算改成链表操作运算就可以了。

代码

ListNode *addTwoNumbers(ListNode *l1, ListNode *l2){
ListNode* result = new ListNode(-1);
ListNode* pre = result;
ListNode *pa = l1, *pb = l2;
int carry = 0;
while(pa != NULL || pb != NULL)
{
int av = pa==NULL ? 0 : pa->val;
int bv = pb==NULL ? 0 : pb->val;
ListNode* node = new ListNode((av+bv+carry)%10);
carry = (av+bv+carry) / 10;
//pre控制插入节点的位置
pre->next = node;
pre = pre->next;//尾插节点
//pa pb 控制循环的进行。
pa = pa==NULL ? NULL : pa->next;
pb = pb==NULL ? NULL : pb->next;
}
if(carry > 0)
pre->next = new ListNode(1);
pre = result->next;
delete result;
return pre;
}


看到一篇博客中的一句话,觉得很认同: 成长没有捷径可走。需要的是一个一个坚实的突破。

是这样子的,只有脚踏实地一步一步的去做,持之以恒,不断学习,才能够达到某个技术的“精通”,学习中从来没有捷径,靠的便是不断坚持的努力,加油吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: