题目来源于leetcode第二题两数相加。

题目描述

给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
例如说
输入:
2 4 3
5 6 4
输出:
7 0 8
因为342 + 465 = 807

思路

这道题很好啊,用的是大数运算的思想也叫高精度。就是说一个链表存储一个数,一个节点存一个数位,进行加法运算。

有三个需要注意的地方。首先是如果一个数已经没下一位了就没必要再继续下去了,就像这样

因为是链表我直接就把下一位的地址接过来了。

然后就是可能会有某种极端情况,一直有进位,还有就是会出现结果位数比加数多的可能。就像下面这样。

代码实现

 struct ListNode { int val; struct ListNode *next; };#define CARRY(a,b) a=1,b-=10 //高精度加法 struct ListNode* addTwoNumbers(struct ListNode* num1, struct ListNode* num2) { int add= 0; //p是最后结果 struct ListNode* p; p = num1;  //进行第一次运算 num1->val += num2->val + add; //有进位 if (num1->val > 9) { CARRY(add, num1->val); } while (NULL != num1->next&&NULL != num2->next) { num1 = num1->next; num2 = num2->next; num1->val += num2->val+add; add = 0; if (num1->val > 9) {  CARRY(add, num1->val);  } }  if (!num1->next)num1->next = num2->next;0 //进行最后的进位运算31 while (add){32 if (!num1->next) {33 num1->next = (struct ListNode*)malloc(sizeof(struct ListNode));34 num1->next->next = NULL;35 num1->next->val = 0;36 }37 num1 = num1->next;38 num1->val++;39 add = 0;40 if (num1->val > 9) {41 CARRY(add, num1->val);42 }43 } 44 return p;45}

-9 逆序输出一个整数的各位数字_leetcode两数相加(大整数相加)相关推荐

  1. python输入一个正整数、将其按逆序输出_Python实现按照指定要求逆序输出一个数字的方法...

    本文实例讲述了Python实现按照指定要求逆序输出一个数字的方法.分享给大家供大家参考,具体如下: 问题是:输入一个数字,按照指定要求逆序输出该数字,很简单,下面是实现: #!usr/bin/env ...

  2. java实现:使用递归编写一个程序,逆序输出一个非负整数。例如输入1234,输出4321(不含前导0)。

    验证集:  输入>输出 123>321 120>21 2040>402 204000>402 直接给代码,注释应该够了. //使用递归编写一个程序,逆序输出一个非负整数. ...

  3. -9 逆序输出一个整数的各位数字_计算机基础知识: 信息数字化

    计算机.数据与信息 无符号位数的表示 (一).四种常用的数制及它们之间的相互转换: 进制 基数 基数个数 权 进数规律 十进制 0.1.2.3.4.5.6.7.8.9 10 10i 逢十进一 二进制 ...

  4. 如何逆序输出一个整数

    给出一个整数,将它逆序输出,首先求出它是一个几位数,利用for循环将数字从高位到低位分别输出.例如1234这个数,首先通过for循环求出,它是一个4位数,然后1234第一次除以1000,得到1并输出, ...

  5. C语言之逆序输出一个四位数

    版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/qq_42680327    题目:从键盘输入一个四位数,要求逆序输出 代码: #include < ...

  6. PHP输入123逆序输出321,编写程序,将一个三位数逆序输出,比如,原三位数为123,新数为321....

    编写一个程序,输入一个三位数,把这个数的百位数与个位数对调,输出对调后的数 参考:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/5522 ...

  7. -9 逆序输出一个整数的各位数字_【每日算法】基础算法——归并排序[求逆序对的数量](四)(思想很经典)...

    题目内容 给定一个长度为n的整数数列,请你计算数列中的逆序对的数量. 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆 ...

  8. -9 逆序输出一个整数的各位数字_【Java编程基本功】(八)逆序输出、是否为回文数,判断星期几,升序排列...

    第二十四题 给一个不多于5位的正整数,要求:一.求它是几位数,二.逆序打印出各位数字. 代码: public 第二十五题 一个5位数,判断它是不是回文数. 代码: public 代码2: public ...

  9. -9 逆序输出一个整数的各位数字_逆序对个数(归并排序)

    题目描述 输入 N 组数据,对每组数据输出逆序对个数. 输入 对于每组测试用例,第一行输入此组数据元素个数 x,接下来 x 行,每行一个数,表示元素.(1≤x≤500000)(1≤x≤500000) ...

最新文章

  1. R语言基于线性回归(Linear Regression)进行特征筛选(feature selection)
  2. layui遍历json数组_shell脚本:json格式化与字段抓取(下)
  3. redhat enterprise linux 哪个版本好,Red Hat Enterprise Linux 版本显示中(Santiago)是啥意思?...
  4. Qt|Linux工作笔记-异步调用ping命令,重定向获取信息,界面显示
  5. git push 和 pull 时 免密执行的方法
  6. Url解码,兼容utf-8和gb2312
  7. nginx并发性能测试
  8. 使用 MySQL C API 访问 MySQL — 示例
  9. 机器学习_周志华_西瓜书_学习笔记_第16章--强化学习
  10. Nignx的修改弱密码套件
  11. python卖水果_用Python解决一个简单的水果分类问题
  12. Swift 阳历转农历,农历转公历
  13. 【3D音效增强神器】Boom 3D for Mac中文版 v1.2.2
  14. 第二周学习前端总结与感悟(一)
  15. 达梦数据库监控-DEM 部署
  16. 计算机英语词汇音频,[听单词] 计算机专业英语词汇音频84,计算机英语单词MP3
  17. html 中渐变方向,CSS3渐变,就是这么玩
  18. 来了老弟,表格的渲染
  19. 18个公认的 世界顶级UI开源框架汇总
  20. 幼儿园初级职称计算机考试,幼儿园教师考试

热门文章

  1. 跨域资源共享 CORS 详解
  2. python基本语法:列表(列表和元组的区别)
  3. You can't specify target table 'TS_AUTH_ADMIN' for update in FROM clause记录
  4. FreeSql (十四)批量更新数据
  5. 修改Sql server中列的属性脚本
  6. Moving Average
  7. 笔记本中美化代码的方法
  8. 第2章 数字之魅——快速寻找满足条件的两个数
  9. Android深入浅出之Binder机制(转)
  10. 1837Balance