0

リンクされたリストに2つの数字を挿入しようとしています。リストは順序付けする必要があるため、小さい数字を大きい数字の前に挿入する必要があります。

リストは最初に大きな数値を追加し、次に 2 番目の小さい数値を挿入するときに、大きい数値と小さい数値を交換する必要があります。

私はそれを行うためだけにこのメソッドを作成しました。このコードの問題は、最初に大きな数値を追加し、次に小さな数値を追加してから、もう一度大きな数値を追加することです。

私は何を間違っていますか?

public void insertFirst(int id, double dd)
{         
    if (isEmpty())
    {
        Link newLink = new Link(id, dd);
        newLink.next = first;
        first = newLink;
    }
    else
    {
        if (first.iData < id)
        {
            Link newLink = new Link(id, dd);
            newLink.next = first;
            first = newLink;
        }
        else
        {
            int iTempData = first.iData;
            double dTempData = first.dData;

            Link newLink = new Link(id, dd);
            newLink.next = first;
            first = newLink;

            Link newLink2 = new Link(iTempData, dTempData);
            newLink2.next = first;
            first = newLink2;
        }
    }
}
4

1 に答える 1

1

簡単な修正は

public void insertFirst(int id, double dd)
{         
    if (isEmpty())
    {
        Link newLink = new Link(id, dd);
        newLink.next = first;
        first = newLink;
    }
    else
    {
        if (first.iData < id)
        {
            Link newLink = new Link(id, dd);
            newLink.next = first;
            first = newLink;
        }
        else
        {
            int iTempData = first.iData;
            double dTempData = first.dData;

            first.iData = id; // replace first
            first.dData = dd; // (do not add new)

            Link newLink2 = new Link(iTempData, dTempData);
            newLink2.next = first;
            first = newLink2;
        }
    }
}

この関数は実際には並べ替えられたリストを維持しないことに注意してください。新しい項目を最初または 2 番目のいずれかに追加できますが、渡された ID が既にリストにあるすべての項目 (たとえば 10 個) よりも大きい場合はどうなるでしょうか?

于 2012-10-19T08:25:36.073 に答える