zoukankan      html  css  js  c++  java
  • 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;
            }

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

  • 相关阅读:
    js实现点击上下按钮,图片向上向下循环滚动切换
    jquery实现点击进入新的页面。(jquery实现超链接)
    jquery实现鼠标移入移除背景图片切换
    C:WindowsSystem32driversetchosts文件显示
    网页添加qq咨询
    本地虚拟站点创建
    ftp获取mysql数据库方法
    数论基础
    最小费用最大流
    AC自动机 hdu2222
  • 原文地址:https://www.cnblogs.com/ningxinjie/p/12889139.html
Copyright © 2011-2022 走看看