剑指offer:合并连个有序链表

还是直接上代码

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;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值