1

dequeを作成する必要がある割り当てがありますが、組み込みのクラスまたはインターフェイスを使用することは許可されていません。配列リストを使用して両端キューを実装しています。私の問題は、たとえば、配列リストの先頭(キューの先頭)に追加する必要がある場合、これを行うことは許可されていないことです。

public void addFirst(ArrayList<Integer> array) 
{
    array.add(0, int);
}

add()関数を使用せずにこれを行う方法はありますか?手動で前面に追加したり、アレイの残りの部分を右にシフトしたりしますか?または、新しい配列リストを作成してコピーするかもしれません...わかりません。どんな助けでも素晴らしいでしょう。私にはたくさんの関数を書くことができます。最初の関数を実行することで、間違いなく正しい方向に進むことができます。ありがとう

4

2 に答える 2

2

組み込みのリスト クラスの使用が許可されていない場合は、ArrayList ではなく配列を参照する必要があると思います。ここで役立つSystem.arrayCopyのような関数があります。

于 2012-10-19T16:20:55.230 に答える
0
class ArrayList< T >
{
   private int _capacity;
   private int _size;
   private T   _data;

   ArrayList( int capacity )
   {
      _capacity = capacity;
      _size     = 0;
      _data     = new T[_capacity];
   }

   void add( T t )
   {
      if( _size < _capacity )
      {
         _data[_size++] = t;
      }
      else
      {
         // do it yourself
      }
   }

   void insert( int index, T t )
   {
      if( _size < _capacity )
      {
         System.arrayCopy( _data, index, _data, index + 1, _size - index );
         _data[_size++] = t;
      }
      else
      {
         // do it yourself
      }
   }

   ...
}
于 2012-10-19T16:43:56.320 に答える