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

题目

(链表表示)两个数相加
给定了表示非负数的两个链表。数字都是以逆序存储的,并且每个节点都包含一个单个的数字。将两个数相加,并且以一个链表的形式返回结果:
输入:(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;
}

看到一篇博客中的一句话,觉得很认同: 成长没有捷径可走。需要的是一个一个坚实的突破。
是这样子的,只有脚踏实地一步一步的去做,持之以恒,不断学习,才能够达到某个技术的“精通”,学习中从来没有捷径,靠的便是不断坚持的努力,加油吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值