Java两个链表求和
运行结果:
具体代码
import java.util.Arrays;
import java.util.Objects;
//两个链表求和
public class Count1 {
// 数据域
protected static int[] data;
// 指针(索引)
protected int next;
public Count1(int[] data) {
Count1.data =data;
}
public static int[] addTwoNumbers(int[] data1, int[] data2) {
// 判断两个链表的长度是否相等
if (data1.length== data2.length ) {
int[] data = new int[data1.length];
for (int i=0;i < data1.length; i++){
data[i] = data1[i]+data2[i];
}
return data;
}
// 如果data1的长度大于data2,则令结果链表以data1的长度为准
// 调用getInts方法并传入参数
else if (data1.length> data2.length) {
// data1的长度最大,当i==data1.length则令data2自i以后的索引自增且元素为0
return getInts(data2, data1);
} else {
// 如果data1的长度小于data2,则令结果链表的长度以data2为准
// 调用getInts方法并传入参数
// data1的长度最短,当i==data1.length时,data[i]=data2[i]
return getInts(data1, data2);
}
}
private static int[] getInts(int[] data1, int[] data2) {
// 以data2的链表长度创建一个链表
int[] data = new int[data2.length];
for (int i = 0; i < data2.length; i++) {
if (i < data1.length) {
data[i] = data1[i]+data2[i];
}else {
data[i] = data2[i];
}
}
return data;
}
@Override
public String toString() {
return "Count1 {" +
" data= " + Arrays.toString(data) +
", next=" + next +
'}';
}
public static void main(String[] args) {
int[] data1 = {9,9,9,9,9,9,9};
int[] data2 = {9,9,9,9};
Count1 count1=new Count1(data1);
System.out.println(count1);
Count1 count2=new Count1(data2);
System.out.println(count2);
System.out.println("两个链表的计算结果为 :"+Arrays.toString(Objects.requireNonNull(addTwoNumbers(data1, data2))));
}
}