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

作者:Struggle4L 时间:2022-06-26 15:09:48 

复习了下数据结构,用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

来源:http://www.cnblogs.com/Vozeen/p/7511414.html

标签:数组,循环队列,java
0
投稿

猜你喜欢

  • C#开发中的垃圾回收机制简析

    2022-08-06 14:10:56
  • Java 函数编程详细介绍

    2022-07-18 14:31:15
  • Java字符判断的小例子

    2023-08-26 17:29:49
  • C语言中的数据整除判断问题

    2023-08-28 20:36:09
  • Android资源文件与层次式导航超详细讲解

    2022-07-14 16:28:22
  • java语法糖之jdk迭代的新特性汇总

    2022-07-09 10:05:19
  • SSH原理及两种登录方法图文详解

    2023-11-14 11:10:53
  • 入门JDK集合之HashMap解析

    2023-11-24 02:45:03
  • c# 抓取Web网页数据分析

    2022-11-10 06:44:57
  • Android WebView实现截长图功能

    2023-07-06 16:11:05
  • Spring IOC创建对象的两种方式

    2023-09-10 15:58:27
  • C#实现创建,删除,查找,配置虚拟目录实例详解

    2022-09-27 06:38:16
  • 关于async和await的一些误区实例详解

    2022-09-22 22:57:29
  • Android实现整理PackageManager获取所有安装程序信息

    2022-11-20 15:13:01
  • java通过Jsoup爬取网页过程详解

    2021-12-20 03:24:10
  • 详解SpringBoot程序启动时执行初始化代码

    2022-05-07 13:36:05
  • Android自定义控件之电话拨打小键盘

    2022-11-17 21:52:08
  • Java继承的问题引导和测试代码

    2023-03-13 18:50:34
  • 详解C# 反射(Reflection)

    2021-09-08 14:42:59
  • Java开发实现猜拳游戏

    2023-09-27 03:21:46
  • asp之家 软件编程 m.aspxhome.com