62,628
社区成员
发帖
与我相关
我的任务
分享
public class ListNodeTest {
public static void main(String[] args) {
MyNumber num1 = new MyNumber(12, 4, 3, 1, 6, 7, 9);
MyNumber num2 = new MyNumber(0, 2, 1, 3, 4);
System.out.println(MyNumber.addition(num1, num2));
System.out.println(num1);
System.out.println(num2);
}
}
class MyNumber {
private int size;
private ListNode first = null;
private ListNode last = null;
public MyNumber(int... values) {
if (values == null) {
throw new RuntimeException();
}
if (values[values.length-1] < 1) {
throw new RuntimeException();
}
first = new ListNode(values[0], null);
last = first;
size++;
for (int i = 1; i < values.length; i++) {
add(values[i]);
size++;
}
}
@Override
public String toString() {
return first.toString();
}
public void add(int i) {
ListNode node = new ListNode(i, null);
last.next = node;
last = node;
}
public static MyNumber addition(MyNumber num1, MyNumber num2) {
int num = num1.size > num2.size ? num1.size : num2.size;
int[] arr = new int[num];
ListNode node1 = num1.first;
ListNode node2 = num2.first;
for (int j = 0; j < num1.size; j++) {
arr[j] = node1.value;
node1 = node1.next;
}
for (int i = 0; i < num2.size; i++) {
arr[i] += node2.value;
node2 = node2.next;
}
return new MyNumber(arr);
}
class ListNode {
private ListNode next;
private int value;
public ListNode(int value, ListNode next) {
super();
this.value = value;
this.next = next;
}
@Override
public String toString() {
StringBuffer str = new StringBuffer();
str.append("{" + value);
ListNode node = this;
while (node.next != null) {
node = node.next;
str.append(" ," + node.value);
}
str.append("}");
return str.toString();
}
}
}