一次性非环形数组队列

2022-10-27 14:38:40

一次性非环形数组队列的显示,添加,移除操作
maxSize 数组空间
front 队列头: 指第一个元素所在位置的前一位
rear 队列尾: 指最后一个元素所在位置

package com.lucky.queue;import java.util.Scanner;/**
 * 非环形数组队列的显示,添加,移除操作
 * @author yuanyuan.wang
 *
 */publicclassArrayQueueDemo{publicstaticvoidmain(String[] args){//测试一//创建一个队列
		ArrayQueue queue=newArrayQueue(3);char key=' ';//接受用户输入
		Scanner scanner=newScanner(System.in);boolean loop=true;//输出一个菜单while(loop){
			System.out.println("s(show):显示队列");
			System.out.println("e(exit):退出程序");
			System.out.println("a(add):添加数据到队列");
			System.out.println("g(get):从队列取出数据");
			System.out.println("h(head):查看队列头的数据");
			key= scanner.next().charAt(0);switch(key){case's':
				queue.showQueue();break;case'e':
				scanner.close();
				loop=false;break;case'a':
				System.out.println("请输入一个数");int value= scanner.nextInt();
				queue.addQueue(value);break;case'g'://取数据try{int res= queue.getQueue();
					System.out.printf("取出的数据是:%d\n",res);}catch(Exception e){// TODO: handle exception
					System.out.println(e.getMessage());}break;case'h'://查看队列头数据try{int res= queue.headQueue();
					System.out.printf("队列头的数据是%d\n",res);}catch(Exception e){// TODO: handle exception
					System.out.println(e.getMessage());}break;default:break;}}
		System.out.println("程序退出~~~");}}//使用数组模拟队列-编写一个ArrayQueue类classArrayQueue{privateint maxSize;//表示数组的最大容量privateint front;//队列头: 指第一个元素所在位置的前一位privateint rear;//队列尾: 指最后一个元素所在位置privateint[] arr;//该数据用于存放数据,模拟队列//创建队列的构造器publicArrayQueue(int arrMaxSize){
		maxSize= arrMaxSize;
		arr=newint[maxSize];
		front=-1;//指向队列头部,分析出front是指向队列头的前一个位置
		rear=-1;//指向队列尾,指向队列尾的数据(即就是队列最后一个数据)}//判断队列是否满publicbooleanisFull(){return rear== maxSize-1;}//判断队列是否空publicbooleanisEmpty(){return rear== front;}//添加数据到队列publicvoidaddQueue(int n){//判断队列是否满if(isFull()){
			System.out.println("队列满,不能加入数据~");return;}
		rear++;
		arr[rear]= n;}//获取队列数据,出队列publicintgetQueue(){//判断队列是否空if(isEmpty()){//抛出异常thrownewRuntimeException("队列空,不能取数据");}
		front++;return arr[front];}//显示队列所有数据publicvoidshowQueue(){//遍历if(isEmpty()){
			System.out.println("队列空的,没有数据");return;}for(int i=0;i<arr.length;i++){
			System.out.printf("arr[%d]=%d\n",i,arr[i]);}}//显示队列的头数据,注意不是取数据publicintheadQueue(){//判断if(isEmpty()){thrownewRuntimeException("队列空,不能取数据");}return arr[front+1];}}
  • 作者:LuckyGuyy
  • 原文链接:https://blog.csdn.net/qq_36821220/article/details/102716317
    更新时间:2022-10-27 14:38:40