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() + " ");
            }
        }
    }
  • 相关阅读:
    AtomicLong与LongAdder的区别
    记录Vmware Workstation及Centos6.8 的安装
    java.lang.NoSuchMethodError问题处理
    java读取UTF-8的txt文件发现开头的一个字符问题
    Java多线程之内存可见性和原子性:Synchronized和Volatile的比较
    关于怎么解决java.lang.NoClassDefFoundError错误
    使用SFTP工具相关问题
    resin中关于url rewrite来传递jsessionid的问题
    Linux常用命令
    Jenkins简单安装及配置(Windows环境)
  • 原文地址:https://www.cnblogs.com/tangxlblog/p/9973209.html
Copyright © 2011-2022 走看看