数组简单实现队列的先进出

数组简单实现队列的先进出

package 队列;

import java.util.Scanner;

public class An_array_of_column {
    public static void main(String[] args) {
        AyyayCoumn ayyayCoumn=new AyyayCoumn(5);
        //创建一个菜单进行提示输入
        Scanner scanner = new Scanner(System.in);
        Boolean lokp;
        lokp = true;
        while (lokp) {
            System.out.println("输入a,显示对列");
            System.out.println("输入b,显示对列头");
            System.out.println("输入c,添加数据进对列");
            System.out.println("输入d,数据出对列");
            char c;
            System.out.println("请输入一个字符");
            c = scanner.next().charAt(0);//接收第一个字符
            switch (c) {
                case 'a':
                    ayyayCoumn.ShowArr();
                    break;
                case 'b':
                    System.out.println(ayyayCoumn.GetHead());
                    break;
                case 'c':
                    System.out.println("输入一个数据添加进队列");
                    int date1 = scanner.nextInt();
                    ayyayCoumn.AdDate(date1);
                    break;
                case 'd':
                    System.out.println(ayyayCoumn.GetDate());
                    break;
                default:
                    System.out.println("输入有误,请输入a,b,c,d中的字符");

            }
        }
    }

    //用数组实现对列先的写一个类
    public static class AyyayCoumn {
        private int MaxSize;//队列的最大的容量
        private int front;//队列头
        private int rear;//队列尾
        private int[] arr;//构建一个数组用来模拟对列

        public int getFront() {
            return front;
        }

        public void setFront(int front) {
            this.front = front;
        }

        public int getRear() {
            return rear;
        }

        public void setRear(int rear) {
            this.rear = rear;
        }

        public AyyayCoumn(int Arrmaxsize) {
            MaxSize = Arrmaxsize;
            arr = new int[MaxSize];
            front = -1;//对列头是指向对列头的的前一个位置
            rear = -1;//队列尾是指向队列的尾部位置最后一个数据
        }

        //判断队列是否为满
        public Boolean IsFull() {
            return rear == MaxSize - 1;
        }

        //判断队列是否为空
        public Boolean IsEmputy() {
            return front == rear;
        }

        //加入数据到队列中
        public void AdDate(int date) {
            if (IsFull()) {
                System.out.println("队列已经满了");
                return;
            } else rear++;
            arr[rear] = date;
        }

        //获取队列的数据,出队列,队列是先进先出;
        //判断对列是不是空
        public int GetDate() {
            if (IsEmputy()) {
                //通过抛出异常
                throw new RuntimeException("队列为空,数据无法取出");
            } else front++;
            return arr[front];
        }

        //显示所有数据
        public void ShowArr() {
            for (int i = 0; i < arr.length; i++) {
                System.out.println("arr[" + i + "]=" + arr[i]);
            }
        }

        //取出队列的头数据
        public int GetHead() {
            if (IsEmputy()) {
                throw new RuntimeException("队列为空,没有数据");
            }
            front++;
            return arr[front];
        }


    }
}

输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
a
arr[0]=0
arr[1]=0
arr[2]=0
arr[3]=0
arr[4]=0
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
c
输入一个数据添加进队列
32
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
c
输入一个数据添加进队列
65
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
c
输入一个数据添加进队列
25
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
c
输入一个数据添加进队列
58
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
v
输入有误,请输入a,b,c,d中的字符
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
c
输入一个数据添加进队列
65
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
c
输入一个数据添加进队列
78
队列已经满了
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
c
输入一个数据添加进队列
98
队列已经满了
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
d
32
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
d
65
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
d
25
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
d
58
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
d
65
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
d
Exception in thread “main” java.lang.RuntimeException: 队列为空,数据无法取出
at 队列.An_array_of_column$AyyayCoumn.GetDate(An_array_of_column.java:96)
at 队列.An_array_of_column.main(An_array_of_column.java:33)

进程已结束,退出代码1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值