Java用数组实现循环队列的示例

 更新时间:2017年09月13日 09:05:56   作者:Struggle4L  
下面小编就为大家带来一篇Java用数组实现循环队列的示例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

复习了下数据结构,用Java的数组实现一下循环队列。

队列的类

//循环队列
class CirQueue{
 private int QueueSize;
 private int front;
 private int rear;
 private int[] queueList ;
 
 public CirQueue(int QueueSize){
  this.QueueSize = QueueSize; 
  queueList = new int[QueueSize];
  front = 0;
  rear = 0;
 }
 
 //获取队列头元素
 public int getQueueElement(){
  //如果队列不为空,返回队头元素,否则抛出异常提示队列为空
  int element = -1;
  if(!isEmpty()){
   element = queueList[front];
   return element;
  }
  else {
   System.out.println("队列为空");
   return -1;
  }
  
 }
 
 //出队
 public int deQueue(){
  int element = -1;
  if(!isEmpty()){
   element = queueList[front];
   front =(front+1)%QueueSize;
   return element;
  }
  else {
   System.out.println("队列为空");
   return -1;
  }
  
 }
 
 
 
 
 
 //入队
 public void enQueue(int element){
  //如果队列未满,添加元素到队尾,否则提示队列已满
  if(!isFull()){
   queueList[rear] = element ;
   rear = (rear+1)%QueueSize;
   
  }
  else {
   System.out.println("队列已满");
  }
 }
 
 //判断队列是否为空
 public boolean isEmpty(){
  boolean b = false;
  if(rear == front)
   b = true;
  return b;
 }
 
 
 //判断队列是否已满
 public boolean isFull(){
  boolean b = false;
  if((rear+1)%QueueSize == front)
   b = true;
  return b;
 }

}

创建对象并测试

package com.test;

import java.util.*;


public class StructTest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  
  //新建并初始化存储空间为3的循环队列(方便判断队满条件,浪费一个数组空间)
  CirQueue cirQueue = new CirQueue(4);
  //入队3个元素
  cirQueue.enQueue(1);
  cirQueue.enQueue(2);
  cirQueue.enQueue(3);
  
  //获取队头元素,获取 但不改变队列
  int temp = cirQueue.getQueueElement();
  System.out.println(temp);
  
  //出队 获取队头元素,并且队头指针往后移一位
  temp = cirQueue.deQueue();
  System.out.println(temp);
  
  //再次获取队头元素
  temp = cirQueue.getQueueElement();
  System.out.println(temp);
  
  
 }

}

输出:

1
1
2

以上这篇Java用数组实现循环队列的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 关于Java Spring三级缓存和循环依赖的深入理解

    关于Java Spring三级缓存和循环依赖的深入理解

    对于循环依赖,我相信读者无论只是听过也好,还是有过了解也好,至少都有所接触。但是我发现目前许多博客对于循环依赖的讲解并不清楚,都提到了Spring的循环依赖解决方案是三级缓存,但是三级缓存每一级的作用是什么,很多博客都没有提到,本篇文章带你深入了解
    2021-09-09
  • Java手动创建线程池代码实例

    Java手动创建线程池代码实例

    这篇文章主要介绍了Java手动创建线程池代码实例,FixedThreadPool或者SingleThreadPool,允许的请求队列长度为Integer.MAX_VALUE,可能会堆积大量的请求,从而导致OOM,需要的朋友可以参考下
    2023-12-12
  • Java消息队列JMS实现原理解析

    Java消息队列JMS实现原理解析

    这篇文章主要介绍了Java消息队列JMS实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 超好用的Java工具类库Hutool用法详解

    超好用的Java工具类库Hutool用法详解

    Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,下面就跟随小编一起来学习一下Hutool的具体用法吧
    2023-09-09
  • spring webClient配置及使用简单代码示例

    spring webClient配置及使用简单代码示例

    WebClient是Spring框架5.0引入的基于响应式编程模型的HTTP客户端,它提供一种简便的方式来处理HTTP请求和响应,支持异步和非阻塞式的请求和响应处理,下面这篇文章主要给大家介绍了关于spring webClient配置及使用的相关资料,需要的朋友可以参考下
    2024-03-03
  • Java编程实现统计数组中各元素出现次数的方法

    Java编程实现统计数组中各元素出现次数的方法

    这篇文章主要介绍了Java编程实现统计数组中各元素出现次数的方法,涉及java针对数组的遍历、比较、运算等相关操作技巧,需要的朋友可以参考下
    2017-07-07
  • javacv开发详解之调用本机摄像头视频

    javacv开发详解之调用本机摄像头视频

    这篇文章主要介绍了javacv开发详解之调用本机摄像头视频,对javacv感兴趣的同学,可以参考下
    2021-04-04
  • Springmvc Controller接口代码示例

    Springmvc Controller接口代码示例

    这篇文章主要介绍了Springmvc Controller接口代码示例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • 关于在Java中如何使用yaml的实例

    关于在Java中如何使用yaml的实例

    这篇文章主要介绍了关于在Java中如何使用yaml的实例,YAML是一种轻量级的数据序列化格式。它以易读、易写的文本格式表示数据,支持列表、字典等各种数据结构,被广泛应用于配置文件、数据传输协议等领域,需要的朋友可以参考下
    2023-08-08
  • springboot数据访问和数据视图的使用方式详解

    springboot数据访问和数据视图的使用方式详解

    这篇文章主要为大家介绍了springboot数据访问和数据视图的使用方式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06

最新评论