java用数组模拟队列方法之一(2)

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);
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值