zoukankan      html  css  js  c++  java
  • 递归实现两个有序链表的合并

    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);
            }
        }
    }
  • 相关阅读:
    2019年江苏大学885编程大题
    2018年江苏大学885编程题
    python-类和对象
    unity游戏框架学习-登录模块
    unity游戏框架学习-AssetBundle
    记 Firebase Crashlytics 接入遇到的坑
    c# 枚举Enum
    unity性能优化-UGUI
    unity性能优化-GPU
    unity性能优化-CPU
  • 原文地址:https://www.cnblogs.com/studyDetail/p/7229210.html
Copyright © 2011-2022 走看看