输入两个链表,每个节点数字0-9
L1 : 1->2->3
L2 3->8->4
两个链表对应数字相加,满10要进位,得到
L : 4->0->8
public class NodeListDemo {
public static Node addNodeList(Node head1, Node head2) {
Node head = null;
Node node = null;
int remainder = 0;
while (head1 != null || head2 != null) {
int n1 = head1 == null ? 0 : head1.value;
int n2 = head2 == null ? 0 : head2.value;
int n = n1 + n2 + remainder;
Node currentNode = new Node(n % 10);
if (node == null) {
node = currentNode;
head = currentNode;
} else {
node.next = currentNode;
node = currentNode;
}
remainder = n / 10;
head1 = head1 == null ? null : head1.next;
head2 = head2 == null ? null : head2.next;
}
return head;
}
public static void main(String[] args) {
Node head1 = Node.getNodeList(Arrays.asList(new Integer[]{2, 4, 3}));
Node head2 = Node.getNodeList(Arrays.asList(new Integer[]{5, 6, 4}));
Node result = addNodeList(head1, head2);
System.out.println(result == null ? "" : result.printNodeList());
}
}
class Node {
int value;
Node next;
public Node(int value) {
this.value = value;
}
public static Node getNodeList(List<Integer> values) {
Node head = null;
Node pre = null;
for (Integer integer : values) {
Node currentNode = new Node(integer);
if (head == null) {
head = currentNode;
pre = currentNode;
} else {
pre.next = currentNode;
pre = currentNode;
}
}
return head;
}
public String printNodeList() {
Node head = this;
StringBuilder builder = new StringBuilder();
while (head != null) {
if (builder.length() == 0) {
builder.append(head.value);
} else {
builder.append("->").append(head.value);
}
head = head.next;
}
return builder.toString();
}
}