• C#创建初始化链表的方式(个人目前写出3种创建的方式)


    链表的类如下:

     class ListNode
        {
            public int val { get; set; }
            public ListNode next { get; set; }
            public ListNode(int _val)
            {
                val = _val;
            }
        }

    方法一:

      使用递归来创建,每次只选取第一个元素,逐步拼接

     public static ListNode getListNode(List<int> list)
            {
                if (list.Count == 0) { return null; }
                ListNode ln = new ListNode(list[0]);
                ln.next = getListNode(list.Where((x,x_index)=>x_index!=0).ToList());
                return ln;
            }

    方法二:

      使用ListNode数组,首先遍历所有节点值,创建成节点对象填充数组中,然后使用数组内部各个对象的层层拼接

      public static ListNode getListNode2(List<int> list)
            {
                if (list.Count == 0) { return null; }
                List<ListNode> listnode = new List<ListNode>();
                list.ForEach(x=> listnode.Add(new ListNode(x)));
                for (int i = 0; i < listnode.Count-1; i++)
                {
                    listnode[i].next = listnode[i + 1];
                }
                return listnode[0];
            }

    方法三:

      这种思想,也是突然受到启发,从后面一点点构造对象,然后让前面的对象指向后面,然后再让前面的对象指向这个,一直到头,完成链表的创建

      public static ListNode getListNode3(List<int> list)
            {
                if (list.Count == 0) { return null; }
                else if (list.Count == 1) { return new ListNode(list[0]); }
                ListNode p = new ListNode(list[list.Count-1]);//初始化为最后一个元素
                ListNode t=new ListNode(list[list.Count-2]);
                for (int i = list.Count-2; i >=0 ; i--)
                {
                    t = new ListNode(list[i]);
                    t.next = p;
                    p = t;
                }
                return t;
            }

    个人推荐使用方法二和方法三,原因很简单,最好别递归哦,因为性能非常低。

  • 相关阅读:
    labview dll 崩溃
    java方法01什么是方法?
    java控制流程控制10增强For循环
    Java方法05可变参数
    java流程控制09打印九九乘法表
    Java流程控制12打印三角形及DUG
    Java方法02方法的定义和调用
    Java流程控制08For循环详解
    java流程控制11break、continue、goto
    java方法04命令行传递参数
  • 原文地址:https://www.cnblogs.com/ningxinjie/p/12889139.html
Copyright © 2020-2023  润新知