0

私は書く必要があります

public void add(int index, int element)

したがって、そのような配列がある場合:

     element: 9 1 2 3  
     index:   0 1 2 3 4

パラメータは add(1,8) で、次を取得しました。

    element: 9 8 1 2 3 
    index:   0 1 2 3 4

これを行う良い方法は何ですか?

これは私が現在使用しているものです:

for (int i = actualSize; i >= 0; i--)
       {
           if (i != index)
           {
               data[i] = data[i-1];
           }
           else if (i == index)
               data[i] = element;
       }

しかし、呼び出し: add(1, 8) が行われると、次の出力が得られます。

     element: 9 8 1 2  
     index:   0 1 2 3 4
4

2 に答える 2

0

関数に論理エラーがあると思います。挿入インデックスの下にある要素を移動しますか? それがあなたがしていることのようです。

あなたのループについてはどうですか:

// make sure that extra space for data[] is allocated

for (int i = maxIndexBeforeInsert; i >= insertAtThisIndex; i--)
{
    data[i+1] = data[i];
}

data[insertAtThisIndex] = element;
于 2012-09-20T15:57:53.103 に答える
0

次のようなものかもしれません:

for (int i = actualSize-1; i>0 && i>index; i--)
{
    data[i] = data[i-1];
}
data[index] = element;

ただし、最初の配列の末尾にある要素など、空の要素が何を意味するかによって異なります。

末尾のものは上書きされますが、それが何を意味するにせよ、他の位置の「null」は通常の値のように移動されます。それはあなたが必要とするものかもしれませんし、そうでないかもしれません。

于 2012-09-20T16:17:11.767 に答える