基本上,我已经获得了 CircularQueue 的实现,我需要实现一个名为“public boolean contains (E other)”的方法,如果参数“other”存在于我的队列中,该方法应该返回 true。
我对它没意见,因为它是一个数组,但后来我看到了另一种情况,这让我很烦。
请记住,您不能在队列中的所有元素之间自由导航。任何时候都只能通过 peek 方法访问最前面的元素。您对 contains 和 intersectWith 方法的实现不得使用任何额外的队列来临时保存该队列的某些元素。
迭代器是否适用于解决这个问题?
非常感谢任何帮助。
米亚尔
解决方案:
答案我想出了,方法旋转描述:方法rotate( int n ) 从队列的前面删除n 个元素并将它们添加到队列的后面。将元素添加到队列后部的顺序与从队列前部移除的顺序相同。例如,给定一个队列 q,其中包含元素 \A、B、C、D、E",其中元素 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;
}