1 package com.coolzhu.Queue;
2
3 import java.util.Scanner;
4
5 //数组模拟队列
6 class arrQueueDemo {
7 public static void main(String[] args) {
8 Scanner input = new Scanner(System.in);
9 char key = ' ';//接收用户输入
10 boolean loop = true;
11 queue q = new queue(3);
12 while (loop) {
13 System.out.println("a:添加数据");
14 System.out.println("b:显示所有数据");
15 System.out.println("c:显示队列头数据");
16 System.out.println("d:获取队列头数据");
17 System.out.println("e:退出");
18 System.out.print("输入要使用的功能:");
19 key = input.next().charAt(0);
20 switch (key) {
21 case 'a':
22 System.out.println("请输入添加的数据");
23 int data = input.nextInt();
24 q.addQueue(data);
25 break;
26 case 'b':
27 q.showQueue();
28 break;
29 case 'c':
30 q.showHeadQueue();
31 break;
32 case 'd':
33 int headQueue = q.getHeadQueue();
34 System.out.println("得到的头队列是:" + headQueue);
35 break;
36 case 'e':
37 loop=false;
38 input.close();
39 System.out.println("系统退出!");
40 break;
41 default:
42 System.out.println("请规范填写!");
43 }
44 }
45 }
46
47 static class queue {//队列类
48 private int maxSize;//数组最大长度
49 private int front;//队列头
50 private int rear;//队列尾
51 private int[] arr;//数组
52
53 //构造函数,属性初始化
54 public queue(int queueMaxSize) {
55 maxSize = queueMaxSize;
56 front = -1;
57 rear = -1;
58 arr = new int[maxSize];
59 }
60
61 //判断队列是否为空
62 public boolean isEmpty() {
63 return rear == front;
64 }
65
66 //判断队列是否满
67 public boolean isFull() {
68 return rear == maxSize - 1;
69 }
70
71 //添加数据
72 public void addQueue(int data) {
73 //首先需要判断队列是否为满状态!
74 if (isFull()) {
75 System.out.println("队列已满,无法继续添加!");
76 return;
77 }
78 rear++;
79 arr[rear] = data;
80 }
81
82 //显示队列中所有数据
83 public void showQueue() {
84 if (isEmpty()) {
85 System.out.println("没有数据!");
86 return;
87 }
88 for (int i = 0; i < arr.length; i++) {
89 System.out.println("第" + (i + 1) + "个数是:" + arr[i]);
90 }
91 }
92
93 //获得队列头数据
94 public int getHeadQueue() {
95 if(isEmpty()){
96 System.out.println("队列中没有数据了!");
97 return 0;
98 }
99 front++;
100 return arr[front];
101 }
102 //显示队列头数据
103 public void showHeadQueue() {
104 System.out.println(arr[front + 1]);
105 }
106 }
107 }
package com.coolzhu.Queue;
import java.util.Scanner;
//数组模拟队列
class arrQueueDemo {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
char key = ' ';//接收用户输入
boolean loop = true;
queue q = new queue(3);
while (loop) {
System.out.println("a:添加数据");
System.out.println("b:显示所有数据");
System.out.println("c:显示队列头数据");
System.out.println("d:获取队列头数据");
System.out.println("e:退出");
System.out.print("输入要使用的功能:");
key = input.next().charAt(0);
switch (key) {
case 'a':
System.out.println("请输入添加的数据");
int data = input.nextInt();
q.addQueue(data);
break;
case 'b':
q.showQueue();
break;
case 'c':
q.showHeadQueue();
break;
case 'd':
int headQueue = q.getHeadQueue();
System.out.println("得到的头队列是:" + headQueue);
break;
case 'e':
loop=false;
input.close();
System.out.println("系统退出!");
break;
default:
System.out.println("请规范填写!");
}
}
}
static class queue {//队列类
private int maxSize;//数组最大长度
private int front;//队列头
private int rear;//队列尾
private int[] arr;//数组
//构造函数,属性初始化
public queue(int queueMaxSize) {
maxSize = queueMaxSize;
front = -1;
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;
}
rear++;
arr[rear] = data;
}
//显示队列中所有数据
public void showQueue() {
if (isEmpty()) {
System.out.println("没有数据!");
return;
}
for (int i = 0; i < arr.length; i++) {
System.out.println("第" + (i + 1) + "个数是:" + arr[i]);
}
}
//获得队列头数据
public int getHeadQueue() {
if(isEmpty()){
System.out.println("队列中没有数据了!");
return 0;
}
front++;
return arr[front];
}
//显示队列头数据
public void showHeadQueue() {
System.out.println(arr[front + 1]);
}
}
}