public class AddListNode {
public ListNode addTwoNumbers(ListNode list1,ListNode list2){
ListNode list = new ListNode(-1);
calcuNum(list1,list2,list,0);
return list;
}
public void calcuNum(ListNode list1,ListNode list2,ListNode list,int t){
if(list1 != null && list2 != null){
int sum = list1.val + list2.val + t;
int a = sum%10;
int b = sum/10;
if(list != null){
list.val = a;
}else{
list = new ListNode(a);
}
calcuNum(list1.next,list2.next,list.next,b);
}else if(list1 != null){
int sum = list1.val + t;
int a = sum%10;
int b = sum/10;
if(list != null){
list.val = a;
}else{
list = new ListNode(a);
}
calcuNum(list1.next,null,list.next,b);
}else if(list2 != null){
int sum = list2.val + t;
int a = sum%10;
int b = sum/10;
if(list != null){
list.val = a;
}else{
list = new ListNode(a);
}
calcuNum(null,list2.next,list.next,b);
}
}
public static void main(String[] args){
AddListNode node = new AddListNode();
ListNode list1 = new ListNode(2);
list1.next = new ListNode(4);
list1.next.next = new ListNode(3);
ListNode list2 = new ListNode(5);
list2.next = new ListNode(6);
list2.next.next = new ListNode(4);
System.out.println(node.addTwoNumbers(list1, list2).toString(node.addTwoNumbers(list1, list2)));
}
}
class ListNode{
int val;
ListNode next;
ListNode(int x){
val = x;
}
public String toString(ListNode node){
String string = "[";
while(node != null){
string += node.val + ",";
node = node.next;
}
string = string.substring(0, string.lastIndexOf(","));
string += "]";
return string;
}
}