Leetcode第二题,用链表实现两个非负整数求和
问题描述:给定两个存放非负整数的链表(不带头结点),逆序存放并且每一个节点只存放一个数字,现要求对这两个数字求和并以链表的形式返回。
例子:
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
思路:
-1 由于这两个非负整数是逆序存放,而且求和结果也需要逆序存放到一个链表中,故只需要对链表中逆序存放的的两个数从左到右求和(对称求和),然后把结果顺序存放到结果链中即可,即:
链表1 2 4 3
+
链表2 5 6 4
=
链表3 7 0 8
- 2 那么如何实现求和运算呢,我们根据加法原理知道,两个数字求和,即是从个位开始,把相应位置上的数字求和然后加上上一位数字求和的进数(除以10的整数部分),然后把得到的结果除以10的余数作为该位的求和结果,除以10的整数部分作为进数加到下一位去,重复此过程直到没有数字可以使用为止。
根据以上思路我们就可以进行加法程序设计了。由于数字的位数可能不同,这里我们分两种情况考虑:
(1)链表1和链表2存储的整数的位数相同。对两个链表的对应位置进行循环求和(使用上面的思路),直到节点为空没有数字可以求和。然后对最高位的进数进行判断,