0

を作成する必要がありますLinkedList。属性と属性で呼び出さNodeれるクラスがあります。LinkedListに降順でアイテムを追加できるようにする必要があります。intNode

指定された数がリストの最大値よりも大きい場合に、リストの先頭に項目を追加できるコードがあります。番号が最も小さいものと同じです。Nodeリストの途中にを追加しようとすると、問題が発生します。再帰を使用する必要があります。私はすでに最大数と最小数を見つけるためにそれを使用しましたが、その最後のケースのコードを取得することはできません(真ん中に追加)。

ヒントを教えていただけますか?たぶん、どちらがベースケースか教えてください。

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 に答える