
package queue;
import java.util.Scanner;
public class CircleQueueTest {
public static void main(String[] args) {
System.out.println("请输入环形队列的大小:");
Scanner sc = new Scanner(System.in);
int size = sc.nextInt();
CircleQueue queue = new CircleQueue(size + 1);
boolean isContinue = true;
while (isContinue) {
System.out.println("查看队列(show):s");
System.out.println("添加队列(add):a");
System.out.println("d出队列(pop):p");
System.out.println("退出(exit):e");
String s = sc.next();
switch (s) {
case "s":
queue.showQueue();
break;
case "a":
if (queue.isFull()) {
System.out.println("队列已经满了~");
break;
}
System.out.println("请输入数据:");
int number = sc.nextInt();
queue.addQueue(number);
break;
case "p":
int result = queue.popQueue();
System.out.println("获取到队列元素:" + result);
break;
case "e":
isContinue = false;
break;
default:
break;
}
}
}
static class CircleQueue {
private int front;
private int tail;
private final int maxSize;
private final int[] queueData;
private CircleQueue(int maxSize) {
this.maxSize = maxSize;
queueData = new int[maxSize];
}
public boolean isFull() {
return (tail + 1) % maxSize == front;
}
public boolean isEmpty() {
return tail == front;
}
public void addQueue(int number) {
if (isFull()) {
System.out.println("队列已经满了~");
return;
}
queueData[tail] = number;
tail = (tail + 1) % maxSize;
}
public int popQueue() {
if (isEmpty()) {
System.out.println("队列为空~");
return 0;
}
int fontValue = queueData[front];
front = (front + 1) % maxSize;
return fontValue;
}
public int size() {
return (tail - front + maxSize) % maxSize;
}
public void showQueue() {
if (isEmpty()) {
System.out.println("队列为空~");
return;
}
for (int i = front; i < front + size(); i++) {
System.out.println("queueData[" + i % maxSize + "]=" + queueData[i % maxSize]);
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)