0

我需要创建一个LinkedList. 我有一个Nodeint属性和Node属性调用的类。我需要能够按降序将项目添加到 LinkedList。

如果给定的数字高于列表中的最高值,我有可以将项目添加到列表开头的代码。与最低的数字相同。尝试Node在列表中间添加 a 时会出现问题。我需要使用递归。我已经用它来找到最高和最低的数字,但我无法为最后一种情况编写代码(在中间添加)。

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

4

1 回答 1

0

解决了它:

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);
            }
        }
    }
于 2012-09-26T20:32:25.233 回答