链表4:链表的加法

Posted lgxbokeyuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表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 }

 

结果:

技术分享图片

 

以上是关于链表4:链表的加法的主要内容,如果未能解决你的问题,请参考以下文章

长整数加法运算

C语言反转单向链表的代码

数据结构22:数组和广义表

Leetcode:Add Two Numbers

Python 触“类”旁通4|重载运算符之单链表的“加减乘除”

剑指offer3.4-代码的鲁棒性