软件编程
位置:首页>> 软件编程>> java编程>> Java 1.8使用数组实现循环队列

Java 1.8使用数组实现循环队列

作者:因吉  发布时间:2022-02-11 04:00:10 

标签:java,循环队列

本文实例为大家分享了Java 1.8使用数组实现循环队列的具体代码,供大家参考,具体内容如下

1、引入

使用数组实现循环队列,功能如下:

1)isFull():队列满?
2)isEmpty():队列空?
3)add():添加元素。
4)pop():移除元素。
5)display():展示队列。
6)getSize():获取当前队列元素个数。

2、代码


package DataStructure;

import java.util.Arrays;

/**
* @author: Inki
* @email: inki.yinji@qq.com
* @create: 2020 1022
* @last_modify: 2020 1023
*/

public class MyArrayQueue<AnyType> {

/**
 * The default max size of my array queue.
 */
private final int DEFAULT_MAX_SIZE = 10;

/**
 * The max size of my array queue.
 */
private int maxSize;

/**
 * The front of my array queue.
 */
private int front;

/**
 * The rear of my array queue.
 */
private int rear;

/**
 * Using array to simulate queue.
 */
private AnyType[] arrQueue;

/**
 * The first constructor.
 */
public MyArrayQueue() {
 this(DEFAULT_MAX_SIZE);
}//Of the first constructor

/**
 * The second constructor.
 */
public MyArrayQueue(int paraMaxSize) {
 maxSize = paraMaxSize + 1;
 arrQueue = (AnyType[]) new Object[maxSize];
 front = 0;
 rear = 0;
}//Of the second constructor

/**
 * Queue is full?
 * @return:
 *  True if full else false.
 */
public boolean isFull() {
 return (rear + 1) % maxSize == front;
}//Of isFull

/**
 * Queue is empty?
 * @return:
 *  True if empty else false.
 */
public boolean isEmpty() {
 return front == rear;
}//Of isEmpty

/**
 * Add element.
 * @param:
 *  paraVal:
 *   The given value.
 */
public void add(AnyType paraVal) {
 if(isFull()) {
  System.out.println("The queue is full.");
  return;
 }//Of if
 arrQueue[rear] = paraVal;
 rear = (rear + 1) % maxSize;
}//Of add

/**
 * Pop element.
 */
public AnyType pop() {
 if (isEmpty()) {
  throw new RuntimeException("The queue is full.");
 }//Of if
 AnyType retVal = arrQueue[front];
 front = (front + 1) % maxSize;
 return retVal;
}//of pop

/**
 * Display array queue.
 */
public void display() {
 if (isEmpty()) {
  System.out.println("The queue is empty.");
  return;
 }//Of if

System.out.print("The queue is: [");
 int i = front;
 while (i != (rear + maxSize- 1) % maxSize) {
  System.out.printf("%s, ", arrQueue[i]);
  i = (i + 1) % maxSize;
 }//Of while
 System.out.printf("%s]", arrQueue[rear - 1]);
}//Of display

/**
 * Get current size of my array queue.
 */
public int getSize() {
 return (rear - front + maxSize) % maxSize + 1;
}//Of getSize

/**
 * The main
 **/
public static void main(String[] args) {
 MyArrayQueue <Integer> testArrayQueue = new MyArrayQueue<>(3);
 testArrayQueue.add(1);
 testArrayQueue.add(2);
 testArrayQueue.add(4);
 testArrayQueue.pop();
 testArrayQueue.display();
}//Of main

}//Of MyArrayQueue

来源:https://blog.csdn.net/weixin_44575152/article/details/109240542

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com