[算法]合并两个有序的单链表

题目:

给定两个有序单链表的头结点head1和head2.请合并两个有序链表,合并后的链表依然有序,并返回合并后的链表的头结点。

例如:

0->2->3->7->null;

1->3->5->7->9->null;

合并后的链表为:0->1->2->3->3->5->7->7->9->null。

程序:

public static Node merge(Node head1,Node head2){
		if (head1==null||head2==null) {
			return head1=head2==null?head2:head1;
		}
		Node head=head1.value<head2.value?head1:head2;
		Node cur1=head1.value<head2.value?head1:head2;
		Node cur2=head1.value>head2.value?head1:head2;
		Node pre=cur1;
		Node next=cur1.next;
		while(cur1!=null&&cur2!=null){
			if (cur1.value<=cur2.value) {
				pre=cur1;
				cur1=cur1.next;
			}else{
				next=cur2.next;
				pre.next=cur2;
				cur2.next=cur1;
				pre=cur2;
				cur2=next;
			}
		}
		pre.next=cur1==null?cur2:cur1;
		return head;
	}
posted @ 2016-03-08 20:39  小魔仙  阅读(1645)  评论(0编辑  收藏  举报