java实现队列(数组结构)
下面展示一些 内联代码片
。
package com.queue;
import java.util.Scanner;
class CricleArrayQueueDemo {
public static void main(String[] args) {
CricleArrayQueue arrayQueue = new CricleArrayQueue(6);
Scanner scanner = new Scanner(System.in);
boolean loop = true;
while (loop) {
System.out.println("a(add)添加队列");
System.out.println("g(get)取出队列");
System.out.println("s(show)打印队列");
System.out.println("e(exit)退出");
System.out.println("h(head)获取第一个");
char k = scanner.next().charAt(0);
switch (k) {
case 'a':
System.out.println("请输入一个数字");
int a = scanner.nextInt();
arrayQueue.addQueue(a);
break;
case 'g':
arrayQueue.getQueue();
break;
case 's':
arrayQueue.show();
break;
case 'e':
loop = false;
break;
case 'h':
System.out.println(arrayQueue.getQueueHead());
break;
default:
break;
}
}
}
}
class CricleArrayQueue {
private int[] arr;
private int front;
private int rear;
private int maxSize;
public CricleArrayQueue(int size) {
maxSize = size;
front = 0;
rear = 0;
arr = new int[maxSize];
}
public boolean isEmpty() {
return front == rear;
}
public boolean isFull() {
return (rear + 1) % maxSize == front;
}
public void addQueue(int a) {
if (isFull()) {
System.out.println("队列已满,无法添加");
return;
}
arr[rear] = a;
rear = (rear + 1) % maxSize;
}
public int getQueue() {
if (isEmpty()) {
throw new RuntimeException("队列为空,无法取队列");
}
int a = arr[front];
front = (front + 1) % maxSize;
return a;
}
public int getQueueHead() {
if (isEmpty()) {
throw new RuntimeException("队列为空,无法取队列");
}
return arr[front];
}
public void show() {
if (isEmpty()) {
System.out.println("数组是空的,无法打印");
return;
}
for (int i = front; i < front+countQueue(); i++) {
System.out.printf("队列第%d个:%d", i % maxSize, arr[i%maxSize]);
System.out.println("");
}
}
public int countQueue() {
return (rear - front + maxSize) % maxSize;
}
}