合并两个有序链表
public class LinkedListMerged {
private class Node {
private Node next;
private int value;
public Node(int value) {
this.value = value;
this.next = null;
}
}
public Node merge(Node from, Node to) {
if (from == null) {
return to;
}
if (to == null) {
return from;
}
if (from.value <= to.value) {
from.next = merge(from.next, to);
return from;
} else {
to.next = merge(from, to.next);
return to;
}
}
public void print(Node node) {
if (node == null) {
return;
}
while (node != null) {
int val = node.value;
if (node.next == null) {
System.out.println(val);
} else {
System.out.print(val + "->");
}
node = node.next;
}
}
}
测试:
public static void main(String[] args) {
LinkedListMerged linkedListMerged = new LinkedListMerged();
Node from = linkedListMerged.new Node(1);
Node from1 = linkedListMerged.new Node(2);
Node from2 = linkedListMerged.new Node(7);
from1.next = from2;
from.next = from1;
Node to = linkedListMerged.new Node(1);
Node to1 = linkedListMerged.new Node(4);
Node to2 = linkedListMerged.new Node(6);
to1.next = to2;
to.next = to1;
Node result = linkedListMerged.merge(from, to);
linkedListMerged.print(result);
}
**运行结果: **
1->1->2->4->6->7