1. 程式人生 > 程式設計 >Java 1.8使用陣列實現迴圈佇列

Java 1.8使用陣列實現迴圈佇列

本文例項為大家分享了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: [email protected]
 * @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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。