当前位置: 首页 > 知识库问答 >
问题:

在不使用临时队列的情况下遍历循环队列

游高杰
2023-03-14

基本上,我已经得到了一个CircularQueue的实现,我需要实现一个名为'public boolean contains(E other)'的方法,如果参数'other'存在于我的队列中,该方法应该返回true。

我对它没意见,因为它是一个数组,但后来我看到了它的另一个条件,这困扰着我。

请记住,您不能在队列中的所有元素之间自由导航。只有front元素在任何时候都可以通过peek方法访问。contains和intersectWith方法的实现不能使用任何额外的队列来临时保存该队列的某些元素。

迭代器是否适用于解决这个问题?

任何帮助都是非常感谢的。

   public boolean contains(E elem) { 

    while( this.isEmpty() != true){

      if(this.peek() == elem){return true;}
      else{rotate(1);}



   } 
   return false;

 }

共有1个答案

公羊俭
2023-03-14

迭代器在这种情况下是不实用的。

因为它是一个循环队列,所以您可以记住您看到的第一件事(不一定要将它完全从循环队列中移除),以及出队列/入队列元素,直到找到您要查找的内容,或者到达第一个出队列的节点。

 类似资料:
  • 我有以下优先级队列: 现在为了得到最后一个元素,我必须pop()队列中的所有元素。是否有某种方法可以检索这个优先级队列的最后一个元素。 我知道可以颠倒“CompareTime”中的顺序,使最后一个元素成为第一个元素。我不想这样做,因为我想按“CompareTime”确定的顺序从优先级队列中弹出()元素。但同时我还需要优先级队列的最后一个元素。。不弹出优先级队列中的所有元素。是否可以确定优先级队列的

  • 由于LinkedList实现了队列,所以我无法使用ListIterator。我不确定如何更改队列中元素的值而不将它们放在临时位置。我该如何解决这个问题呢?

  • 输入一个整数序列:a1,a2,a3,…,an,进行入队或出队操作。用数组Q[m](最多能放m个元素,本题设m=9)表示队列,并且设一个标志tag,以tag0和tag1来区别在队头指针(front)和队尾指针(rear)相等时,队列状态为“空”还是“满”。试编写相应的入队和出队等算法,并完成以下任务:对输入的ai,当ai>0时,将ai入队,若入队时队满则发生上溢“OVERFLOW”;当ai=0时,队

  • 我试图找到类似的问题,但找不到解决我问题的最佳方案。我在应用程序中使用SpringBoot,在代码中使用集成的solace队列。我可以使用以下代码读取solace队列中的消息: 在SpringBoot的帮助下,所有属性(如VPN)都从属性文件中提取,并创建ConnectionFactory。下面是读取消息的代码: 根据消息的类型,定位服务执行器并处理消息。它对我们完全有效。 但是,在某些情况下,我

  • 假设我有一个大小为[10]的数组,当该数组被填满时,我想实现一个FIFO结构,而不是它只是填满了,因此无法向数组中添加新的东西,并抛出旧的东西。 例如,如果我有一个包含汽车制造商的字符串数组,当我的数组中有10个制造商时,我希望删除最旧的条目,添加最新的条目,但要考虑kepping FIFO。我如何在这样的方法中实现它:

  • 循环队列(Circular Queue) 1. 循环队列的概念 1.1 循环队列的定义 为了能够充分地使用数组中的存储空间,克服”假溢出”现象,可以把数组的前端和后端连接起来,形成一个环形的表,即把存储队列元素的表从逻辑上看成一个环,成为循环队列(circular queue)。 1.2 循环队列中各元素的逻辑及存储关系 循环队列的首尾相接,当队头指针front和队尾指针rear进到maxSize