Add Two number in Linked(forward order)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public static ListNode add(ListNode l1, ListNode l2){ 2 3 Stack<Integer> s1 = new Stack<Integer>(); 4 Stack<Integer> s2 = new Stack<Integer>(); 5 while(l1!=null){ 6 s1.push(l1.val); 7 l1 = l1.next; 8 } 9 while(l2!=null){ 10 s2.push(l2.val); 11 l2 = l2.next; 12 } 13 int carry = 0; 14 ListNode safe = new ListNode(-1); 15 ListNode p = safe.next; 16 while(!s2.isEmpty() &&!s1.isEmpty()){ 17 int d1 = s1.pop(); 18 int d2 = s2.pop(); 19 safe.next = new ListNode((d1+d2+carry)%10); 20 safe.next.next = p; 21 p=safe.next; 22 carry = (d1+d2)/10; 23 } 24 while(!s1.isEmpty()){ 25 int d1 = s1.pop(); 26 safe.next = new ListNode((d1+carry)%10); 27 safe.next.next = p; 28 p = safe.next; 29 carry = (d1+carry)/10; 30 } 31 while(!s2.isEmpty()){ 32 int d2 = s2.pop(); 33 safe.next = new ListNode((d2+carry)%10); 34 safe.next.next = p; 35 p = safe.next; 36 carry = (carry+d2)/10; 37 } 38 if(carry>0){ 39 safe.val = carry; 40 return safe; 41 } 42 else return safe.next; 43 }