数据结构--java语言实现合并两个排序的链表

25 篇文章 0 订阅
10 篇文章 0 订阅

目录

1 题目描述

2 解题思路

3 代码实现


1 题目描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

2 解题思路

对于两个已经排序的链表,我们可以定义一个虚拟结点,通过比较两个链表值的大小,完成链表的拼接工作。最后返回虚拟结点的下一结点即可。

3 代码实现

public ListNode Merge(ListNode list1,ListNode list2) {
        //定义一个虚拟结点,最后返回该结点的下一结点
        ListNode node = new ListNode(-1);
        //定义newHead指向node,使得已经排序的结点连接到newHead的后面,确保node结点保持不动
        ListNode newHead = node;
        while(list1 != null&&list2 != null){
             if(list1.val <= list2.val){
                 newHead.next = list1;
                 newHead = list1;
                 list1 = list1.next;
             }else{
                 newHead.next = list2;
                 newHead = list2;
                 list2 = list2.next;
             }
        }
        //当list1链表遍历完之后,直接将list2链表连接到newHead结点之后
        if(list1 == null){
             newHead.next = list2;
        }
        if(list2 == null){
             newHead.next = list1;
        }
        return node.next;
    }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值