1. 程式人生 > >連結串列4:連結串列的加法

連結串列4:連結串列的加法

解題思路:

1.建立一個結點類

2.建立一個加法方法,一個輸出方法

3.加法方法和輸出方法均使用遞迴的方式

此題一共需要三個連結串列:兩個用來儲存兩組數值,一個用儲存它們兩個相加的結果(注意進位)

 

對9237與8624,這兩組數進行試驗

程式碼如下:

 1 //結點類 
 2 class Node{
 3     int data;
 4     Node next;
 5 
 6     public Node() {}
 7     public Node(int data) {
 8         this.data=data;
 9     }
10
} 11 12 public class PlusLinkNode { 13 14 public static void main(String[] args) { 15 Node node1=new Node(7); 16 node1.next=new Node(3); 17 node1.next.next=new Node(2); 18 node1.next.next.next=new Node(9); 19 20 Node node2=new Node(4); 21 node2.next=new
Node(2); 22 node2.next.next=new Node(6); 23 node2.next.next.next=new Node(8); 24 25 Node node3=plus(node1,node2); 26 print(node3); 27 } 28 29 public static Node plus(Node a,Node b) {return plus2(a,b,0);} 30 public static Node plus2(Node a,Node b,int
i) { 31 //i為進位數 32 if(a==null&&b==null&&i<1) 33 return null; 34 int value=i; 35 if(a!=null) 36 value+=a.data; 37 if(b!=null) 38 value+=b.data; 39 Node result=new Node(value%10); 40 result.next=plus2(a==null?null:a.next,b==null?null:b.next,value>=10?1:0); 41 return result; 42 } 43 44 //列印方法 45 public static void print(Node node) { 46 if(node==null) 47 return ; 48 print(node.next); 49 System.out.print(node.data); 50 } 51 52 }

 

結果: