【剑指offer】链表——链表合成

package cn.dzp.flyroc.offer;

public class MergeDemo {

    /*题目描述:输入两个单调递增的链表,输出两个链表合成后的链表
     * 当然我们需要合成后的链表满足单调不减规则*/

    /*思路:递归与非递归求解,小数放在前面*/

    //代码实现
    public static class ListNode{

        int data;
        ListNode nextNode = null;

        ListNode(int data){
            this.data = data;
        }
    }

    public static ListNode Merge(ListNode list1, ListNode list2){

        if (list1 == null){     //判断list1是否为空
            return list2;
        }

        if (list2 == null){     //判断list2是否为空
            return list1;
        }
        ListNode newHead = null;        //建立一个新的头节点(用来存储比较后小的节点值)
        
        if (list1.data <= list2.data){      //list1中的值小,将值放入头节点,头结点的下一个节点进行递归遍历
            

            newHead = list1;
            newHead.nextNode = Merge(list1.nextNode, list2);

        }else {     //list2中的元素小

            newHead = list2;
            newHead.nextNode = Merge(list1, list2.nextNode);
        }
        System.out.println("这是递归后的链表:"+newHead.data);
        return newHead;
    }

    public static void main(String[] args){

        ListNode list1 = new ListNode(1);
        ListNode list3 = new ListNode(3);
        ListNode list5 = new ListNode(5);

        list1.nextNode = list3;
        list3.nextNode = list5;
        list5.nextNode = null;

        ListNode list2 = new ListNode(2);
        ListNode list4 = new ListNode(4);
        ListNode list6 = new ListNode(6);

        list2.nextNode = list4;
        list4.nextNode = list6;
        list6.nextNode = null;


        Merge(list1, list2);
    }
}

 

转载于:https://my.oschina.net/u/4169647/blog/3102021

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值