/**
* 循环数组实现队列的演示代码
*/
package com.szy.structure.queues;
import java.util.Scanner;
public class CircularArrayQueues {
private final int SIZE=5; //数组大小
private int FRONT; //前端
private int REAR; //末端
private int[] queueArray=null; //存储队列的数组
public CircularArrayQueues(){
FRONT=-1;
REAR=-1;
queueArray=new int[SIZE];
}
/**
* 向队列中插入元素
* @param info
*/
public void insert(int info){
//如果栈已经满
if ((FRONT==0&&REAR==SIZE-1)||(FRONT==REAR+1)) {
System.out.println("队列已满");
return;
}
//如果栈为空
if (FRONT==-1) {
FRONT=0;
REAR=0;
}
else {
//如果末端已经到达数组末尾
if (REAR==SIZE-1) {
REAR=0;
}
else {
REAR++;
}
}
queueArray[REAR]=info;
}
/**
* 从队列中删除元素
*/
public void remove(){
if (FRONT==-1) {
System.out.println("空队列!");
return;
}
//如果栈中只有一个元素
if (REAR==FRONT) {
REAR=-1;
FRONT=-1;
}
else {
//如果前端位于数组末尾
if (FRONT==SIZE-1) {
FRONT=0;
}
else {
FRONT++;
}
}
}
/**
* 输出栈中元素
*/
public void display(){
if (FRONT==-1) {
System.out.println("空队列!");
return;
}
int front_position=FRONT;
int rear_position=REAR;
System.out.println("队列中元素:");
if (front_position <= rear_position) {
while (front_position <= rear_position) {
System.out.print(queueArray[front_position]+" ");
front_position++;
}
}
else {
System.err.println(rear_position);
while(front_position<SIZE){
System.out.print(queueArray[front_position]+" ");
front_position++;
}
front_position=0;
while(front_position<=rear_position){
System.out.print(queueArray[front_position]+" ");
front_position++;
}
}
System.out.println("\n");
}
public static void main(String[] args) throws Exception {
CircularArrayQueues queues=new CircularArrayQueues();
int choice=0;
while(true)
{
System.out.println("\n---MENU---");
System.out.println("1.Insert");
System.out.println("2.Delete");
System.out.println("3.Display");
System.out.println("4.Exit");
System.out.println("----------");
System.out.println("请选择:");
Scanner scanner=new Scanner(System.in);
choice=scanner.nextInt();
switch (choice) {
case 1:
{
System.out.println("请输入数字:");
int input=scanner.nextInt();
queues.insert(input);
}
break;
case 2:
{
queues.remove();
}
break;
case 3:
{
queues.display();
}
break;
case 4:
return;
default:
System.err.println("无效的输入!");
break;
}
}
}
}