package queueDirection0925;
public interface MyQueue {
public boolean isFull(int data);
public boolean isEmpty();
public void add(int data);
public void delete();
public void print();
}
package queueDirection0925;
import java.util.Scanner;
public class Queue implements MyQueue{
//定义数组长度
static int maxSize;
//定义头指针
static int front;
//定义尾指针
static int end;
//定义计数器 ,作为判断队空与否的条件
static int count;
//定义数组
static int[] array;
static Scanner scanner=new Scanner(System.in);
static Queue qq=new Queue();
// public Queue() {
// this.count=0;
// this.front=0;
// this.end=0;
//
// System.out.print("please input a number of queue'length: ");
// this.maxSize=scanner.nextInt();
// array=new int[maxSize];
// }
// public Queue(int maxsize) {
// this.maxSize = maxsize; //获取数组长度
// array = new int[maxsize]; //创建数组
// end = 0;
// front=0;
// count=0;
// }
@Override
public boolean isFull(int data) {
if(front==end && count==maxSize) {
System.out.println("你好哇! "+data+",队已经满啦,你进不去了!先出个队试试\n");
return true;
}else {
return false;
}
}
@Override
public boolean isEmpty() {
if(front==end && count==0) {
System.out.println("队列已经空了呀,没有数据了\n");
return true;
}else {
return false;
}
}
@Override
public void add(int data) {
if(isFull(data)) {
return;
}
array[end]=data;
System.out.println(data+" 进队成功!");
count++;
if(count==array.length) {
System.out.println("============"+"注意!注意,队列满了哈!"+"============\n");
}
end=(end+1)%array.length;
}
@Override
public void delete() {
if(isEmpty()) {
return;
}else {
System.out.println(array[front]+" 出队成功!");
count--;
front=(front+1)%array.length;
}
println("-----------------------");
}
@Override
public void print() {
if(isEmpty()) {
return;
}else {
if(end>front) {
System.out.println("当前队列元素:"+"\n-----------------------");
for(int i=front;i<end;i++) {
System.out.print(array[i]+" ");
}
System.out.println("\n-----------------------"+"输出结束了哦\n");
}else if(end<=front) {
System.out.println("当前队列元素:"+"\n-----------------------");
int j=front;
for(int m=front;m<front+count;m++) {
System.out.print(array[j]+" ");
j=(j+1)%array.length;
}
System.out.println("\n-----------------------"+"输出结束了哦\n");
}
}
}
public static void main(String[] args) {
homePage();
}
private static void homePage() {
String tip="1.创建队列\n"
+ "2.数据进队\n"
+ "3.数据出队\n"
+ "4.查看当前队列元素\n"
+ "0.退出系统";
println(tip);
println("-----------------------");
print("请选择您要执行的操作: ");
int x=scanner.nextInt();
println("-----------------------");
if(x==0) {
println("下次再见,拜拜");
System.exit(0);
}
switch(x) {
case 1:
Queue();
break;
case 2:
addPage();
break;
case 3:
deletePage();
break;
case 4:
printPage();
break;
}
}
private static void printPage() {
qq.print();
homePage();
}
private static void deletePage() {
qq.delete();
homePage();
}
private static void addPage() {
println("当前为进队操作,如需退出请输入'exit'");
while(true) {
if(qq.count==5) {
homePage();
}
print("请输入您要进入队列的数据: ");
String str=scanner.next();
if(str.equals("exit")) {
homePage();
}
int data=Integer.parseInt(str);
qq.add(data);
}
}
private static void Queue() {
print("您需要先创建一个队列,请输入要创建的队列容量: ");
maxSize=scanner.nextInt();
array=new int[maxSize];
count=0;
front=0;
end=0;
println("队列创建成功!现在可以进行其他操作了!");
println("-----------------------");
homePage();
}
private static void print(String tip) {
System.out.print(tip);
}
private static void println(String tip) {
System.out.println(tip);
}
}
java用数组模拟队列方法之一(2)
最新推荐文章于 2024-06-18 16:29:42 发布