链表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 }

 

结果:

 

posted @ 2018-12-31 20:12  Spider&Man  阅读(705)  评论(0编辑  收藏  举报