[算法]合併兩個有序的單鏈表

題目:

給定兩個有序單鏈表的頭結點head1和head2.請合併兩個有序鏈表,合併後的鏈表依然有序,並返回合併後的鏈表的頭結點。spa

例如:程序

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

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

合併後的鏈表爲:0->1->2->3->3->5->7->7->9->null。margin

程序:

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;
	}
相關文章
相關標籤/搜索