循环队列

Posted 番茄疯了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了循环队列相关的知识,希望对你有一定的参考价值。


/*
循环队列 我们用数组实现 特点 :先进先出 我们设置一个队头front和队尾rear 当队列为空时front=rear,入队列时把数据放到rear的位置,然后rear向下移动一个 * 当rear再向下移动一位就和front指向同一块区域时(即rear+1=front),队列就已经装满了 * 出队列时,获取并返回front指向的区域所存的数据,front向下移动一个,当front=rear时队列为空 * */ package com.tulun; public class TestMl { public static void main(String[] args) { // TODO Auto-generated method stub QueueLink q1=new QueueLink(); for(int i=0;i<10;i++){ q1.push(i); } q1.show(); q1.pop(); q1.show(); int n=q1.getTop(); System.out.println(n); } } class QueueLink{ int elem[]; int front; int rear; public QueueLink(){ this(10); } public QueueLink(int size){ this.elem=new int[size]; this.front=0; this.rear=0; } int usedSize=0; int allSize=10; //判断是否为满 public boolean isFull(){ if((this.rear+1)%this.allSize==this.front){ return true; } return false; } //入队 public void push(int val){ if(isFull()){ return; } this.elem[this.rear]=val; this.rear=(this.rear+1)%this.allSize;//后移一位 usedSize++; } public boolean isEmpty(){ //return this.front=this.rear; if(this.front==this.rear){ return true; } return false; } public void pop(){ if(isEmpty()){ return; } this.elem[this.front]=-1; this.front=(this.front+1)%this.allSize; usedSize--; } public int getTop(){ if(isEmpty()){ return -1; } return this.elem[this.front]; } public void show(){ for(int i=this.front;i<rear;i=(i+1)%this.allSize){ System.out.print(this.elem[i]+" "); } System.out.println(); } }

 

以上是关于循环队列的主要内容,如果未能解决你的问题,请参考以下文章

常用python日期日志获取内容循环的代码片段

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

AVKit – 视频片段仅循环 2 次

如何使用事件侦听器来加载动画片段的循环

用java实现循环队列?

java-----循环队列