package com.xkp.data.datasructure.queue;
import java.util.ArrayList;
import java.util.Scanner;
/**
* author: xkp
*/
public class ArrayQueueDemo {
//队列 初始化 头部front 为-1 ,尾部rear 为-1 ,新增时front 不变,rear增加,取数据时候rear不变 front增加
//缺点 放满的数据取出来后再放报错
/**
* 头部
*/
private int front;
private int rear;
private int maxSize;
private int[] arr ;
public ArrayQueueDemo( int arrMaxSize) {
maxSize=arrMaxSize;
//指向队列第一个数据的前一个位子
this.front = -1;
//指向队列最后股一个位置
this.rear = -1;
arr=new int[maxSize];
}
//队列是否为空
public boolean isEmpty(){
//队列为空的时候 front==rear
return front==rear;
}
//队列是否已满
public boolean isFull(){
return rear==maxSize-1;
}
public void addQueue(int n){
if (isFull()){
System.out.println("队列已满");
return;
}
rear++;
arr[rear]=n;
}
public int getQueue(){
//判断队列是否为空
if(isEmpty()){
throw new RuntimeException("队列为空");
}
front++;
return arr[front];
}
public void showQueue(){
if(isEmpty()){
System.out.println("队列为空");
return;
}
for (int i = 0; i <arr.length; i++) {
System.out.printf("arr[%d]=%d\n",i,arr[i]);
}
}
//显示队列头部数据
public int peekQueue(){
if(isEmpty()){
throw new RuntimeException("数据为空");
}
return arr[front+1];
}
public static void main(String[] args) {
ArrayQueueDemo arrayQueueDemo=new ArrayQueueDemo(3);
char key=' ';
Scanner scanner=new Scanner(System.in);
boolean flag=true;
while (flag){
System.out.println("s(show): 显示队列");
System.out.println("e(exit): 退出程序");
System.out.println("a(add): 添加数字");
System.out.println("g(get): 获取队列值");
System.out.println("p(peek): 查看队列头数据");
key=scanner.next().charAt(0);
switch (key){
case 's':
arrayQueueDemo.showQueue();
break;
case 'e':
scanner.close();
return;
case 'a':
try {
System.out.println("请输入一个数");
int value = scanner.nextInt();
arrayQueueDemo.addQueue(value);
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
case 'g':
try {
int res = arrayQueueDemo.getQueue();
System.out.println("获取到的数据"+res);
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
case 'p':
try {
int res = arrayQueueDemo.peekQueue();
System.out.println("获取的头部数据"+ res);
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
}
}
}
}
数组模拟队列
最新推荐文章于 2023-05-05 20:55:02 发布