zoukankan      html  css  js  c++  java
  • 队列及循环队列(Java实现)

    package ch03;
    
    /*
     * 队列类
     */
    public class MyQueue {
        // 底层实现是一个数组
        private long[] arr;
        // 有效数据大小
        private int elements;
        // 队头
        private int front;
        // 队尾
        private int end;
    
        /**
         * 默认构造方法
         */
        public MyQueue() {
            arr = new long[10];
            elements = 0;
            front = 0;
            end = -1;
        }
    
        /**
         * 带参数的构造方法,参数为数组的大小
         */
        public MyQueue(int maxsize) {
            arr = new long[maxsize];
            elements = 0;
            front = 0;
            end = -1;
        }
    
        /**
         * 添加数据,从队尾插入
         */
        public void insert(long value) {
            arr[++end] = value;
            elements++;
        }
    
        /**
         * 删除数据,从队头删除
         */
        public long remove() {
            elements--;
            return arr[front++];
        }
    
        /**
         * 查看数据,从队头查看
         */
        public long peek() {
            return arr[front];
        }
    
        /**
         * 判断是否为空
         */
        public boolean isEmpty() {
            return elements == 0;
        }
    
        /**
         * 判断是否满了
         */
        public boolean isFull() {
            return elements == arr.length;
        }
    }
    package ch03;
    
    /*
     * 循环队列类
     */
    public class MyCycleQueue {
        // 底层实现是一个数组
        private long[] arr;
        // 有效数据大小
        private int elements;
        // 队头
        private int front;
        // 队尾
        private int end;
    
        /**
         * 默认构造方法
         */
        public MyCycleQueue() {
            arr = new long[10];
            elements = 0;
            front = 0;
            end = -1;
        }
    
        /**
         * 带参数的构造方法,参数为数组的大小
         */
        public MyCycleQueue(int maxsize) {
            arr = new long[maxsize];
            elements = 0;
            front = 0;
            end = -1;
        }
    
        /**
         * 添加数据,从队尾插入
         */
        public void insert(long value) {
            if (end == arr.length - 1) {
                end = -1;
            }
            arr[++end] = value;
            elements++;
        }
    
        /**
         * 删除数据,从队头删除
         */
        public long remove() {
            long value = arr[front++];
            if (front == arr.length) {
                front = 0;
            }
            elements--;
            return value;
        }
    
        /**
         * 查看数据,从队头查看
         */
        public long peek() {
            return arr[front];
        }
    
        /**
         * 判断是否为空
         */
        public boolean isEmpty() {
            return elements == 0;
        }
    
        /**
         * 判断是否满了
         */
        public boolean isFull() {
            return elements == arr.length;
        }
    }
    package ch03;
    
    public class TestMyQueue {
        public static void main(String[] args) {
            MyCycleQueue mq = new MyCycleQueue(4);
            mq.insert(23);
            mq.insert(45);
            mq.insert(13);
            mq.insert(1);
    
            System.out.println(mq.isFull());
            System.out.println(mq.isEmpty());
    
            System.out.println(mq.peek());
            System.out.println(mq.peek());
    
            while (!mq.isEmpty()) {
                System.out.print(mq.remove() + " ");
            }
            System.out.println();
    
            mq.insert(23);
            mq.insert(45);
            mq.insert(13);
            mq.insert(1);
    
            while (!mq.isEmpty()) {
                System.out.print(mq.remove() + " ");
            }
        }
    }
  • 相关阅读:
    MyBatis常见面试题以及解读
    如何防止sql注入攻击
    宝塔Linux面板基础命令
    Centos7配置静态ip
    宝塔Linux面板安装
    idea中安装阿里巴巴的代码规范插件
    idea中快速将类中的属性转为Json字符串的插件
    创建线程的四种方式
    sleep()方法与wait()方法的区别
    解决线程安全的几种方式
  • 原文地址:https://www.cnblogs.com/tangxlblog/p/9973209.html
Copyright © 2011-2022 走看看