/**
* Given two sorted linked list, and merge them without using extra space
* (using constant space is allowed).
* For example, if 1 -> 2->3 -> 5 merges with 2 ->3-> 4 -> 5, we have 1 -> 2 ->3-> 4 -> 5
*
*/
public class MergeList {
public static Element merge(Element head1, Element head2){
assert(true);
Element p1 = head1;
Element p2 = head2;
Element p = new Element();
Element head = p;
while(p1!=null && p2!=null){
if(p1.value > p2.value){
p.next = p2;
p2 = p2.next;
}else if(p1.value < p2.value){
p.next = p1;
p1 = p1.next;
}else{
p.next = p1;
p1 = p1.next;
p2 = p2.next;
}
p = p.next;
}
if(p1 == null){
p.next = p2;
}else{
p.next = p1;
}
return head.next;
}
/**
* @param args
*/
public static void main(String[] args) {
Element head1 = new Element(1);
Element a1 = new Element(2);
Element a2 = new Element(3);
Element a3 = new Element(5);
Element head2 = new Element(2);
Element b1 = new Element(3);
Element b2 = new Element(4);
Element b3 = new Element(5);
head1.next = a1;
a1.next = a2;
a2.next = a3;
head2.next = b1;
b1.next = b2;
b2.next = b3;
Element head = MergeList.merge(head1, head2);
if(head == null){
System.out.println("null");
}else{
Element p = head;
while(p != null){
System.out.print(p.value + " ");
p = p.next;
}
}
}
}
链表合并
最新推荐文章于 2024-05-01 16:00:54 发布