成都网站建设设计

将想法与焦点和您一起共享

Java循环队列原理与用法详解-创新互联

本文实例讲述了Java循环队列原理与用法。分享给大家供大家参考,具体如下:

从策划到设计制作,每一步都追求做到细腻,制作可持续发展的企业网站。为客户提供成都网站设计、网站建设、网站策划、网页设计、域名与空间、网页空间、网络营销、VI设计、 网站改版、漏洞修补等服务。为客户提供更好的一站式互联网解决方案,以客户的口碑塑造优易品牌,携手广大客户,共同发展进步。

在正式进行循环队列学习之前,我们先来看看在顺序队列中删除队首元素出现的问题

(1)设一个容量为capacity=8,size=5(a,b,c,d,e)的数组,左侧为队首、右侧为队尾。

Java循环队列原理与用法详解

(2)出队一个元素后,需整体往前移动一位

#出队

Java循环队列原理与用法详解

#2整体前移一位

Java循环队列原理与用法详解

关于该种操作方式我们很容易得出时间复杂度为O(n)。

这时我们就想可不可以在出队元素后,整体元素不往前移,而是在数组中记下队首front是谁,同时队尾tail指向在下一次元素入队时的位置,这样当再有出队时只需要维护一下front的指向即可,而不需移动元素。就这样我们就有了循环队列的情况。

Java循环队列原理与用法详解

2.循环队列原理

(1)初始,数组整体为空时,队首front、队尾tail指向同一个位置(数组索引为0的地方)也即front==tail 时队列为空

Java循环队列原理与用法详解

(2)当往数组中添加元素后,

Java循环队列原理与用法详解

(3)出队一个元素,front指向新的位置

Java循环队列原理与用法详解

(4)入队元素,tail叠加

Java循环队列原理与用法详解

(5)当tail不能再增加时,数组前面还有空余,此时循环队列就该出场了。

Java循环队列原理与用法详解

此时数组应该变为这样:

Java循环队列原理与用法详解

在往数组中添加一个元素:

Java循环队列原理与用法详解

这样数组就已经满了(tail+1==front 队列满),开始出发扩容操作。【capacity中,浪费一个空间】。

为了tail能返回到数组的前面位置,将队列满的表达式变为 【(tail+1)%c==front】这样数组就可以循环移动了。

3.循环队列代码实现

新建一个类LoopQueue并实现接口Queue。

#1:接口Queue代码如下:

package Queue;

public interface Queue {
  //获取队列中元素个数
  int getSize();

  //队列中元素是否为空
  boolean isEmpty();

  //入队列
  void enqueue(E e);

  //出队列
  E dequeue();

  //获取队首元素
  E getFront();
}

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:Java循环队列原理与用法详解-创新互联
URL网址:http://chengdu.cdxwcx.cn/article/ihhdo.html