题目:
思路:本题给了俩个链表,每一位数字按照逆序存储-->个位(第一位)位于链表前方,
直接利用加法的竖式计算,从第一位开始每位依次相加,并加上进位,再将结果保存进需返回的链表【注:任何一位相加若结果大于等于10需取结果的个位数并进位(进位数保存为1)】
下面第一张图片为我们常用的竖式计算,从右到左(依次为个位,十位,百位)依次计算
第二张图片就是本题,由于逆序,故从左到右(依次为个位......)依次计算
【图二右上方第三行为大于或等于10需进位(下图这里发生笔误)】
注:
若给定的俩个链表长度不同,则将较短的后面补0即可;
在最后一位(最高位)计算完毕,如果存在进位为1,则需再定义一个节点存储进位(如70+50,最高位计算结果为12,进位1也需保存);
注意设置头指针front,指向输出链表的头部;
由于下面代码头结点不存储值,故返回的是front.next;
代码:
相关知识:
1. 取sum的个位可用sum%10,
2. 取十位可用sum/10(由于sum为整形,故可利用精度丢失来获取十位)
3.只有当俩个结点都为null时才需结束循环(若一个为空则按数值为0处理)也就是说l1存在或
l2存在便进入循环
4. 定义当前结点的下一个结点时可直接用out.next=new ListNode(value);
5.指向下一个节点l1=l1.next;
拓展知识:
java中存在LinkedList这一类,位于java.util 包中;
使用前的引用:import java.util.LinkedList;
创建方法:LinkedList<E> list = new LinkedList<E>();
添加元素:list.add( );
头部添加元素:list.addFirst(); 移除:list.removeFirst(); 获取:list.getFirst();
尾部添加元素:list.addLast(); 移除:list.removeLast(); 获取:list.getLast();