/**
* 出队
*
* @return 头部数据
*/
public int remove() {
if (isEmpty()) {
throw new RuntimeException("队列为空不能取出数据!!");
}
return array[++front];
}
/**
* 打印队列中的元素
*/
public void show() {
if (isEmpty()) {
System.out.println("The queue is empty.");
return;
}
for (int i = 0; i < array.length; i++) {
System.out.printf(&#34;arr[%d]=%d\n&#34;, i, array);
}
}
/**
* 打印队列头部元素
*/
public void head() {
if (isEmpty()) {
System.out.println(&#34;The queue is empty.&#34;);
return;
}
System.out.println(&#34;head: &#34; + array[front + 1]);
}
}测试
package com.zsy.datastructure.queue;
import java.util.Scanner;
/**
* @author zhangshuaiyin
*/
public class ArrayQueueTest {
public static void main(String[] args) {
ArrayQueue queue = new ArrayQueue(3);
// 接收输入字符
char key;
Scanner scanner = new Scanner(System.in);
boolean loop = true;
while (loop) {
System.out.println(&#34;****************&#34;);
System.out.println(&#34;s(show): 显示队列&#34;);
System.out.println(&#34;a(add): 添加数据&#34;);
System.out.println(&#34;g(get): 取出数据&#34;);
System.out.println(&#34;h(head): 头部数据&#34;);
System.out.println(&#34;按其他任意键退出...&#34;);
System.out.println(&#34;****************&#34;);
key = scanner.next().charAt(0);
switch (key) {
case &#39;s&#39;:
queue.show();
break;
case &#39;a&#39;:
System.out.println(&#34;请输入要添加队列的数字:&#34;);
int value = scanner.nextInt();
queue.add(value);
break;
case &#39;g&#39;:
try {
System.out.println(&#34;取出的数据:&#34; + queue.remove());
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
case &#39;h&#39;:
queue.head();
break;
default:
scanner.close();
loop = false;
System.out.println(&#34;程序退出~~&#34;);
break;
}
}
}
}
4. 数组循环队列
/**
* 出队
*
* @return 头部数据
*/
public int remove() {
if (isEmpty()) {
throw new RuntimeException(&#34;队列为空不能取出数据!!&#34;);
}
// 取出数据为:array[front], 取出后 front 后移,当移动到最后一个位置时,从 0 重新计数
int value = array[front];
front = (front + 1) % maxSize;
return value;
}
/**
* 打印队列中的元素,从front开始到最后一个元素
*/
public void show() {
if (isEmpty()) {
System.out.println(&#34;The queue is empty.&#34;);
return;
}
for (int i = front; i < front + size(); i++) {
System.out.printf(&#34;arr[%d]=%d\n&#34;, i % maxSize, array[i % maxSize]);
}
}
/**
* 打印队列头部元素
*/
public void head() {
if (isEmpty()) {
System.out.println(&#34;The queue is empty.&#34;);
return;
}
System.out.println(&#34;head: &#34; + array[front]);
}
/**
* @return 获取队列数据个数
*/
public int size() {
return (rear - front + maxSize) % maxSize;
}
}
测试
package com.zsy.datastructure.queue;
import java.util.Scanner;
/**
* @author zhangshuaiyin
*/
public class CircleArrayQueueTest {
public static void main(String[] args) {
CircleArrayQueue queue = new CircleArrayQueue(3);
// 接收输入字符
char key;
Scanner scanner = new Scanner(System.in);
boolean loop = true;
while (loop) {
System.out.println(&#34;****************&#34;);
System.out.println(&#34;s(show): 显示队列&#34;);
System.out.println(&#34;a(add): 添加数据&#34;);
System.out.println(&#34;g(get): 取出数据&#34;);
System.out.println(&#34;h(head): 头部数据&#34;);
System.out.println(&#34;按其他任意键退出...&#34;);
System.out.println(&#34;****************&#34;);
key = scanner.next().charAt(0);
switch (key) {
case &#39;s&#39;:
queue.show();
break;
case &#39;a&#39;:
System.out.println(&#34;请输入要添加队列的数字:&#34;);
int value = scanner.nextInt();
queue.add(value);
break;
case &#39;g&#39;:
try {
System.out.println(&#34;取出的数据:&#34; + queue.remove());
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
case &#39;h&#39;:
queue.head();
break;
default:
scanner.close();
loop = false;
System.out.println(&#34;程序退出~~&#34;);
break;
}
}
}
}
青山不改,绿水常流,谢谢大家!!!