还是直接上代码
public class Solution {
/***********************
* 合并两个链表 毫无疑问 要对两个链表进行遍历
* @param list1 链表1
* @param list2 链表2
* @return 返回合并后链表的头结点
*/
public ListNode Merge(ListNode list1,ListNode list2) {
//空链表判断
if(list1==null)//如果链表1为空
{
return list2;//返回链表2
}
else if(list2==null)//相似的 如果链表2为空 返回链表1
{
return list1;
}
//当两链表均不为空时 执行如下操作
ListNode head=null;//用于返回的头节点
ListNode curNode=null;//遍历过程中用于标注已经完成部分排序恋链表的尾部
//初始化过程 : 首先选出一个头结点 头节点值小的为头结点
if(list1.val<=list2.val)
{
head=list1;//标注头结点
list1=list1.next;//下一访问位置后移
}
else
{
head=list2;
list2=list2.next;
}
//标注当前完成排序链表尾部
curNode=head;
//循环过程 遍历查找两链表
while((list1!=null)&&(list2!=null))
{
//判断比较当前位置两链表元素值大小
if(list1.val<=list2.val)
{
curNode.next=list1;
curNode=curNode.next;
list1=list1.next;
}
else
{
curNode.next=list2;
curNode=curNode.next;
list2=list2.next;
}
}
//循环退出 说明有链表已经遍历完成
if(list1==null)
{
curNode.next=list2;
}
else if(list2==null)
{
curNode.next=list1;
}
//返回头结点
return head;
}
}
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}