算法学习----合并两个有序的链表

本文介绍了一种合并两个非递减有序链表的方法,通过创建一个新的链表来保持元素的有序性。该方法适用于需要合并两个已排序链表的场景。

将两个非递减链表合成一个,并使得合成后的链表已然是有序(非递减)链表:

/*
public class ListNode {
    int val;
    ListNode next = null;
     ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode Merge(ListNode list1,ListNode list2) {
        if(list1==null&&list2==null)return null;
        if(list1==null&&list2!=null)return list2;
        if(list1!=null&&list2==null)return list1;
        ListNode newlist = new ListNode(-1);//建立新的节点,只作为头结点使用
        ListNode temp = newlist;//创建新的临时节点
        while(list1!=null&&list2!=null){//判断循环条件两个链表节点是否为空
            if(list1.val<=list2.val){//list1的值大于等于list2,将list1当前节点连接到newlist上
                temp.next=list1;
                temp = temp.next;//临时节点后移到新加入到节点
                list1 = list1.next;//list1位置后移一个位置
            }
            else{//注释内容同上
                temp.next = list2;
                temp = temp.next;
                list2 = list2.next;
            }
        }
        if(list2!=null) temp.next=list2;//循环结束如果list2有空余节点,把list2连接到newlist的最后一个节点上,即temp节点
        if(list1!=null) temp.next=list1;//同上
        newlist = newlist.next;//由于初始化时新建了一个节点,故删除此节点
        return newlist;//返回新的节点newlist
    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值