基本的に、CircularQueueの実装が与えられましたが、パラメータ「other」がキューに存在する場合にtrueを返すことになっている「publicboolean contains(Eother)」というメソッドを実装する必要があります。
配列だったので大丈夫でしたが、それから私を悩ませているこの他の条件を見ました。
キュー内のすべての要素を自由にナビゲートすることはできないことに注意してください。peekメソッドを使用すると、いつでもフロント要素にのみアクセスできます。containsメソッドとintersectWithメソッドの実装では、このキューの要素の一部を一時的に保持するために追加のキューを使用してはなりません(MUSTNOT)。
この問題を解決するためにイテレータを適用できますか?
どんな助けでも大歓迎です。
Mjall
解決:
私が思いついた答え、メソッドrotateの説明:メソッドrotate(int n)は、キューの前からn個の要素を削除し、それらをキューの後ろに追加します。要素は、キューの前から削除されるのと同じ順序でキューの後ろに追加されます。たとえば、要素\ A、B、C、D、E "を含むキューqが与えられた場合、要素Aはキューの先頭にあり、メソッド呼び出しq.rotate(2)に続いて、キューの内容が表示されます。 \ 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;
}