首页 > 编程语言 > 详细

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

时间:2016-03-08 21:19:54      阅读:163      评论:0      收藏:0      [点我收藏+]

题目:

给定两个有序单链表的头结点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;
	}

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

原文:http://www.cnblogs.com/xiaomoxian/p/5255511.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!