使用数组模拟一个普通队列
package com.queue;
import java.util.Scanner;
import javax.management.JMRuntimeException;
public class ArrayQueue {
public static void main(String[] args) {
//测试
ArrayQueue Queue = new ArrayQueue();
arrayQueue queue = Queue.new arrayQueue();
queue.createQueue(3);
Scanner scanner = new Scanner(System.in);
char key = ' ';//用户选择
boolean loop = true;
while (loop) {
System.out.println("*****************************");
System.out.println("s:显示队列所有元素");
System.out.println("a:添加元素");
System.out.println("g:取出元素");
System.out.println("h:显示队头元素");
System.out.println("e:退出程序");
System.out.println("*****************************");
System.out.println("请输入你的选择");
key = scanner.next().charAt(0);
switch (key) {
case 's':
queue.showQueue();
break;
case 'a':
System.out.println("请输入要添加的数据");
int data = scanner.nextInt();
queue.addQueue(data);;
break;
case 'g':
try {
queue.getQueue();
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
case 'h':
queue.getHead();;
break;
case 'e':
loop = false;
break;
default:
break;
}
}
}
//使用数组模拟队列
class arrayQueue{
private int maxSize;//队列最大长度
private int front;//队头下标
private int rear;//队尾下标
private int arr[];//用来模拟队列的数组
//创造队列
public void createQueue(int arrMaxSize) {
maxSize = arrMaxSize;
front = rear = -1;
arr = new int[maxSize];
}
//判断队列是否为空
public boolean isEmpty() {
return rear == front;
}
//判断队列是否已满
public boolean isFull() {
return rear == maxSize-1;
}
//往队列中添加元素
public void addQueue(int data) {
//判断队列是否已满
if (isFull()) {
System.out.println("队列已满,不能添加元素");
return;
}
arr[++rear] = data;
}
//队头元素出队列
private void getQueue() {
//判断是否为空
if (isEmpty()) {
//抛出异常
throw new RuntimeException("队列为空");
}
System.out.println(arr[++front]);
}
//遍历队列
private void showQueue() {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
//取队头元素
public void getHead() {
System.out.println(arr[++front]);
}
}
}