【剑指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);
    }
}
相关文章
相关标签/搜索