zoukankan      html  css  js  c++  java
  • 21. Merge Two Sorted Lists

    SLinkedList<int> slist = new SLinkedList<int>();
    slist.AppendRange(new[] { 1, 2, 4 });
    Console.WriteLine(slist.Print());
    
    SLinkedList<int> slist2 = new SLinkedList<int>();
    slist.AppendRange(new[] { 1, 3, 4 });
    Console.WriteLine(slist2.Print());
    
    Console.WriteLine("MergeList");
    var rslt = slist.MergeList(slist2);
    Console.WriteLine(rslt.Print());
    

    /// <summary>
    /// 合并 2 个有序链表
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="source"></param>
    /// <param name="source2"></param>
    /// <returns></returns>
    public static SLinkedList<T> MergeList<T>(this SLinkedList<T> source, SLinkedList<T> source2) where T : IComparable<T>
    {
        var temp = new SLinkedList<T>(source);
        temp.SelectionSort();
        var temp2 = new SLinkedList<T>(source2);
        temp2.SelectionSort();
        var node = MergeTwoListImp(temp.Head, temp2.Head);
        return new SLinkedList<T>(node);
    }
    static SLinkedListNode<T> MergeTwoListImp<T>(SLinkedListNode<T> node1, SLinkedListNode<T> node2) where T : IComparable<T>
    {
        if (node1 == null)
        {
            return node2;
        }
        if (node2 == null)
        {
            return node1;
        }
        if (node1.Data.IsLessThan(node2.Data))
        {
            node1.Next = MergeTwoListImp(node1.Next, node2);
            return node1;
        }
        node2.Next = MergeTwoListImp(node1, node2.Next);
        return node2;
    }
    
  • 相关阅读:
    springBoot启动异常 Failed to load ApplicationContext
    mysql存储过程
    springBoot集成Swagger
    groupmems命令:更改和查看组成员 和 usermod命令修改组
    javaBean简介
    Angular获取dom元素,以及父子组建之间相互传值
    Lambda表达式
    坐标转换
    扩展方法
    Binding的Path(路径)
  • 原文地址:https://www.cnblogs.com/wesson2019-blog/p/15500382.html
Copyright © 2011-2022 走看看