java实现简单的数组模拟顺序队列

直接上代码:


public class duilie {
    public static void main(String[] args) {

    }

    /**
     * 这是一个队列类,先入先出,具体包含队列的属性,定义以及对队列的操作
     * 这里采用数组模拟队列,一个队列自然包括头部,尾部,最大长度
     */
    static class ArrayQueue{
        private int head;
        private int rear;
        private int[] arr;
        private int maxSize;

        /**
         * 第一步仍然是编写构造方法来创建的对象
         * 输入整个队列的最大长度
         */
        public ArrayQueue(int maxSize){
            this.maxSize=maxSize;
            arr=new int[maxSize];
            //这里让都和尾都等于-1,因为队列刚刚初始化,没有数据
            head=-1;
            rear=-1;
        }

        /**
         * 判断数组是否为空,如果是,返回true
         */
        public boolean isEmpty(){
            //如果头和尾相等,链表自然为空
            return head==rear;
        }
        /**
         * 判断数组是否为满
         */
        public boolean isFull(){
            //如果尾节点是最大长度-1(毕竟是数组),那么队列已满
            return rear==maxSize-1;
        }
        /**
         * 接着便是添加数据,n是数据,为了满足队列的特性
         * 我们设置了入只能在队列的尾部入,出只能在队列的头部出
         */
        public void addQueue(int n){
           if (isFull()){
               System.out.println("队列已满");
               return;
           }
           rear++;
           arr[rear]=n;
        }
        /**
         * 入队列之后是出队列
         * 获取队列的数据,出队列
         */
        public int outQueue(){
            if (isEmpty()){
                throw new RuntimeException("队列是空的,不能取出数据");
            }
            head++;
            return arr[head];
        }
        /**
         * 显示队列中的所有数据
         */
        public void showQueue(){
            if (isEmpty()){
                System.out.println("队列是空的,没有数据");
            }
            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("队列是空的,不能取出数据");
            }
            return arr[head+1];
        }


    }

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值