Add Two number in Linked(forward order)

 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 }
View Code

 

posted @ 2014-02-26 02:49  krunning  阅读(159)  评论(0编辑  收藏  举报