連結串列4:連結串列的加法
阿新 • • 發佈:2018-12-31
解題思路:
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=newNode(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,inti) { 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 }
結果: