Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 制作LinkedList:按顺序添加_C# 4.0_Recursion - Fatal编程技术网

C# 4.0 制作LinkedList:按顺序添加

C# 4.0 制作LinkedList:按顺序添加,c#-4.0,recursion,C# 4.0,Recursion,我需要创建一个链接列表。我有一个名为Node的类,它具有int属性和Node属性。我需要能够以降序向LinkedList添加项目 如果给定的数字高于列表中的最高数字,我有代码可以将项目添加到列表的开头。最低的数字也是一样。当试图在列表中间添加节点< /代码>时,问题就出现了。我需要使用递归。我已经用它找到了最高和最低的数字,但我无法找到最后一个案例的代码(在中间添加) 你能给我一个提示吗?也许告诉我哪一个是基本情况?解决了它: Node root = null; public void

我需要创建一个
链接列表
。我有一个名为
Node
的类,它具有
int
属性和
Node
属性。我需要能够以降序向LinkedList添加项目

如果给定的数字高于列表中的最高数字,我有代码可以将项目添加到列表的开头。最低的数字也是一样。当试图在列表中间添加<代码>节点< /代码>时,问题就出现了。我需要使用递归。我已经用它找到了最高和最低的数字,但我无法找到最后一个案例的代码(在中间添加)

你能给我一个提示吗?也许告诉我哪一个是基本情况?

解决了它:

Node root = null;

    public void Add(int data)
    {
        Node m = new Node();
        m.data = data;

        if (root == null)
        {
            root = new Node();
            root.data = data;
            root.Next = null;
        }

        else if (root.Next == null)
        {                    
            if (m.data > root.data)
            {
                Node tempRoot = root;
                root = m;
                m.Next = tempRoot;
                tempRoot.Next = null;
            }

            else
            {
                root.Next = m;
                m.Next = null;
            }
        }

        else if (m.data > root.data)
        {
            m.Next = root;
            root = m;
        }

        else
        {
            Node temp = root;
            Node x = Insert(temp, m);

            for (; temp != x; temp = temp.Next) ;
            m.Next = temp.Next;
            temp.Next = m;
        }
    }

    public Node Insert(Node n, Node insertMe)
    {
        if (n.Next == null)
        {
            return n;
        }

        else
        {
            if (insertMe.data >= Insert(n.Next, insertMe).data)
            {
                return n;
            }

            else
            {
                return Insert(n.Next, insertMe);
            }
        }
    }