基本的に私はCircularQueueの実装を与えられました。 'public boolean contains(E other)'というメソッドを実装する必要があります。他の人は私のキューに存在します。一時的なキューを使わずに循環キューを横切る
それは配列だったので、私はそれで大丈夫でしたが、その後、私はそれを盗聴しているこの他の状態を見ました。
キュー内のすべての要素を自由にナビゲートできないことに注意してください。 peekメソッドを使用すると、フロントエレメントだけがいつでもアクセス可能です( )。 containsとintersectWithメソッドの実装は、このキューの要素のいくつかを一時的に保持するために余分なキューを使用してはならない(MUST )。
この問題を解決するためにIteratorを適用できますか?
ご協力いただきまして誠にありがとうございます。
Mjall
ソリューション:私が思いついた
回答、 方法が説明を回転させる: rotateメソッド(int型n)は、キューの先頭からn個の要素を削除し、背面に追加します キュー。要素は、キューの前面の から削除されたのと同じ順序でキューの後部に追加されます。例えば、要素Aが、キューの先頭にある であり、メソッド呼び出しq.rotate(2)に続いて、要素A、B、C、D、E "を含むキューqが与えられた場合、キューは\ C、D、E、 A、B "となります。
public boolean contains(E elem) {
while(this.isEmpty() != true){
if(this.peek() == elem){return true;}
else{rotate(1);}
}
return false;
}
要素をキューに2回入れることはできますか? [私は実際のオブジェクト、アイデンティティが平等ではないことを意味する] - そうでなければ、なぜあなたは頭の一時的な参照を保持できないのでしょうか? – amit
@amit:制約のように聞こえるのは、繰り返すことができないということです。 msgstr "フロントエレメントだけがいつでもアクセス可能です"#:。 –
@OliCharlesworth:この循環キューでは、すべての要素をポップした場合、キューは空になるか古いヘッダーに戻りますか? [私は2番目を仮定し、反復としてそれを参照してください] – amit