class Solution2 {
public static void main(String[] args) {
Solution2 solution2 = new Solution2();
//0
ListNode l1 = null;
ListNode l2 = null;
ListNode listNode = solution2.addTwoNumbers(l1, l2);
while (listNode != null){
System.out.println(listNode.val);
listNode = listNode.next;
}
}
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
//返回节点的指针
ListNode rest = new ListNode();
//当前链表的最后一个节点
ListNode p = rest;
//表示进位
int carry = 0;
/**
* 当l1和l2同时不为空时,进行循环并相加。
*/
while (null != l1 && null !=l2){
p.next = new ListNode((l1.val+l2.val + carry)%10);
carry = (l1.val+l2.val + carry)/10 == 1 ? 1 : 0;
p = p.next;
l1 = l1.next;
l2 = l2.next;
}
while (null != l1){
p.next = new ListNode((l1.val + carry)%10);
carry = (l1.val + carry)/10 == 1 ? 1 : 0;
p = p.next;
l1 = l1.next;
if (carry == 0){
p.next= l1;
break;
}
}
while (null != l2){
p.next = new ListNode((l2.val + carry)%10);
carry = (l2.val + carry)/10 == 1 ? 1 : 0;
p = p.next;
l2 = l2.next;
if (carry == 0){
p.next= l2;
break;
}
}
if (carry ==1){
while (null !=p.next){
p = p.next;
}
p.next = new ListNode(1);
}
return rest.next;
}
}