首页 > 编程语言 > 详细

Java数组模拟队列

时间:2019-10-25 18:48:03      阅读:50      评论:0      收藏:0      [点我收藏+]

风萧萧兮易水寒,吾当存高远

技术分享图片

import java.util.*;
public class ArrayQueueDemo
{
    public static void main(String args[]){

        Scanner In=new Scanner(System.in);
        boolean flag=true;
        System.out.println("输入队列长度大小");
        int n=In.nextInt();
        char c=' ';
        ArrayQueue queue=new ArrayQueue(n);
        while(flag){
            System.out.println("s(显示队列)");
            System.out.println("a(添加数据到队列)");
            System.out.println("g(取出队列数据)");
            System.out.println("h(显示队列头数据)");
            System.out.println("e(退出程序)");
            c=In.next().charAt(0);    //1.得到单个字符;

            switch(c){
                case 's':
                    queue.showQueue();   //2.方法调用
                    break;

                case 'a':
                    System.out.println("输入一个数据:");
                    queue.Add(In.nextInt());
                    break;

                case 'g':
                    try{               //###3.异常输出方式

                    System.out.println("取出的数据为:"+queue.getQueue());
                }

                    catch(Exception e){
                        System.out.println(e.getMessage());
                    }
                    break;
                
                case 'h':
                    try{    
                        System.out.println("头数据为:"+queue.getHead()); 
                    }
                    catch(Exception e){
                        System.out.println(e.getMessage());
                        }
                    break;
                
                case 'e':
                    flag=false;      //4.退出循环方式
                    break;
                default :
                    break;
            }
        }
        System.out.println("程序退出");
}
}
class ArrayQueue{
    
    int Max;  //队列长度
    int front;//初始标记
    int rear; //移动标记
    int [] arr;

    public  ArrayQueue(int n){
        Max=n;
        front=-1;
        rear=-1;
        arr=new int[Max] ;         //5.构造方法之数组分开写
    }

    public  boolean isFull(){
        return rear==Max-1;
        }

    public boolean isEmpty(){
        return rear==front;
    }

    public  void Add(int x){

        if(isFull()){
            System.out.println("队列已满,不能添加数据");
        }
        else{
            rear++;
            arr[rear]=x;
        }
    }

    public int getQueue(){

        if(isEmpty()){

            throw new RuntimeException("队列为空,不能取出数据");   //6.数据异常抛出写法
        }
        else{
        
            return arr[++front];}
    }

    public void showQueue(){

        if(isEmpty()){
            System.out.println("队列为空");
            return;
        }
        else{
            for(int i=0;i<arr.length;i++){
                System.out.printf("arr[%d]=%d\n",i,arr[i]);
            }
        }
    }

    public  int getHead(){
        if(isEmpty()){
            throw new RuntimeException("队列为空,不能得到头数据");
        }
        else{ 
            return arr[front+1];   //注意:此处不能front++,否则队列相当于取出数据
        }
    }

}

此篇是我学习‘’尚硅谷‘’韩顺平老师的讲解所写,目的就是为了练一下基本操作写法,老师讲的真的是好啊,不远的将来我的java也要像韩老师一样好 !hahah

Java数组模拟队列

原文:https://www.cnblogs.com/DongChenYi/p/11739466.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!