• 递归实现两个有序链表的合并


    package com.wyl.linklist;
    
    /**
     * 合并两个链表
     * @author wyl
     */
    public class MergeLinkList {
    
        /**
         * 内部类,链表节点的结构
         * @author wyl
         *
         */
        public static class Node{
            private int val; //节点值
            private Node next; //节点的后继节点
            public Node(){
            }
            public Node(int val){
                this(val,null);
            }
            public Node(int val,Node next){
                this.val = val;
                this.next = next;
            }
            public int getVal() {
                return val;
            }
            public void setVal(int val) {
                this.val = val;
            }
            public Node getNext() {
                return next;
            }
            public void setNext(Node next) {
                this.next = next;
            }
        }
        /**
         * 递归实现两个排序链表的合并
         * @param l1
         * @param l2
         * @return
         */
        public Node merge(Node l1, Node l2){
            Node node = null;
            if(l1 == null || l2 == null){
                return l1==null?l2:l1;
            } else if(l1 != null || l2 != null){
                if(l1.val < l2.val){
                    node = l1;
                    node.next = merge(l1.next, l2);
                }else{
                    node = l2;
                    node.next = merge(l1, l2.next);
                }
            }
            return node;
        }
        public static void main(String[] args) {
            
            MergeLinkList mergeLinkList = new MergeLinkList();
            Node node = new Node(10); //存储排序好的偶数值节点
            for(int i=10; i>0; i=i-2){
                node = new Node(i, node);
            }
            
            Node node2 = new Node(15);//存储排序好的奇数值节点
            for(int i=15; i>0; i=i-2){
                node2 = new Node(i, node2);
            }
            
    //        Node n = mergeLinkList.merge(node, node2);
    //        Node n = mergeLinkList.merge(node, null);
    //        Node n = mergeLinkList.merge(null, node2);
            Node n = mergeLinkList.merge(null, null);
            if(n != null){
                while(n.next != null){
                    System.out.println(n.val);
                    n = n.next;
                }
                System.out.println(n.val);
            }
        }
    }
  • 相关阅读:
    RGB色彩模式
    淘宝console
    倒计时
    放大镜效果
    谢谢你乱码
    [Linux Deploy]镜像扩展容量
    [Linux Deploy]SD 卡挂载问题
    [Linux Deploy]安装PHP环境
    [Linux Deploy]安装Dotnet Core 环境
    [Linux Deploy]安装MYSQL 设置自启动
  • 原文地址:https://www.cnblogs.com/studyDetail/p/7229210.html
Copyright © 2020-2023  润新知