• 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;
    }
    
  • 相关阅读:
    Django Rest Framework
    模块化开发
    单文件组件
    在create-react-app创建的React项目应用中配置JQ、Sass
    React 生命周期
    React项目的打包
    JS中的事件冒泡和事件捕获
    webpack 入门教程
    如何优雅地使用 VSCode 来编辑 vue 文件?
    页面跳转选中对应的导航
  • 原文地址:https://www.cnblogs.com/wesson2019-blog/p/15500382.html
Copyright © 2020-2023  润新知