zoukankan      html  css  js  c++  java
  • java 实现简单循环队列

    package www.queue;
    
    import java.util.Arrays;
    
    /**
     * 循环队列:
     *         循环队列的出现是为了解决顺序队列出队列后,首指针向后移动后前面的存储过程浪费不能使用的情况。
     * 根据普通的顺序队列可以知道:不管是入队还是出队操作,首尾指针都是向同一个方向移动(向后移动即+1操作)
     * 
     * @author Administrator
     *
     */
    public class LoopQueue {
        private int first;//首指针
        private int last;//尾指针
        private int size;//队列元素个数
        private Object[] objects;
        public LoopQueue(){
            objects = new Object[10];
        }
        //入队
        public void add(Object value){
            /*if (((last+1)%10)==first) {
                throw new RuntimeException("队列已满!");//如果采用指针的方式判断队满,则需要牺牲一存储单元,这里采用队内元素数量来判断
            }*/
            if (size>=10) {
                throw new RuntimeException("队列已满!");
            }
            objects[last] = value;
            last = (last+1)%10;//模数组长度
            size++;
        }
        //出队
        public Object poll(){
            if (size<=0) {
                throw new RuntimeException("队为空!");
            }
            Object oldValue = objects[first];
            objects[first] = null;
            first = (first+1)%10;
            size--;
            return oldValue;
        }
        @Override
        public String toString() {
            return "LoopQueue [first=" + first + ", last=" + last + ", size="
                    + size + ", objects=" + Arrays.toString(objects) + "]";
        }
        
    }
  • 相关阅读:
    8.5 exit函数进程控制
    8.2 进程标识
    8.6 wait和waitpid函数进程控制
    2.jpg
    8.3 fork函数进程控制
    8.4 vfork函数进程控制
    8.9 竞态条件
    8.8 wait3和wait4函数进程控制
    8.7 waitid函数进程控制
    Silverlight Tools 3.0中文正式版发布(附下载地址)
  • 原文地址:https://www.cnblogs.com/wanjn/p/8371394.html
Copyright © 2011-2022 走看看