zoukankan      html  css  js  c++  java
  • 数组队列 ArrayQueue

    package datastructures.queue;
    
    /**
     * @author warriorg
     */
    public class ArrayQueue<T> implements Queue<T> {
        private final Object[] items;
        private int takeIndex;
        private int putIndex;
        private int count;
    
    
        public ArrayQueue(int capacity) {
            this.items = new Object[capacity];
            this.takeIndex = 0;
            this.putIndex = 0;
        }
    
        private void enqueue(T item) {
            items[putIndex] = item;
            if (++putIndex == items.length) {
                putIndex = 0;
            }
            count++;
        }
    
        private T dequeue() {
            T t = (T) items[takeIndex];
            items[takeIndex] = null;
            if (++takeIndex == items.length) {
                takeIndex = 0;
            }
            count--;
            return t;
        }
    
        @Override
        public boolean offer(T elem) {
            if (isFull()) {
                return false;
            } 
    
            enqueue(elem);
            return true;
        }
    
        @Override
        public T poll() {
            if (isEmpty()) {
                return null;
            }
            return dequeue();
        }
    
        @Override
        public T peek() {
           return (T)items[takeIndex];
        }
    
        @Override
        public boolean isEmpty() {
            return count == 0;
        }
    
        @Override
        public int size() {
            return count;
        }
    
        public boolean isFull() {
            return count == items.length;
        }
    
        public static void main(String[] args) {
            ArrayQueue<Integer> queue = new ArrayQueue<>(4);
            queue.offer(1);
            queue.offer(2);
            queue.offer(3);
            queue.offer(4);     
            System.out.println("size: " + queue.size());
            System.out.println(queue.poll());
            System.out.println(queue.poll());
            System.out.println(queue.poll());
            System.out.println(queue.poll());
        }
    }
    
  • 相关阅读:
    SQL应用初级指南
    XML 文档的基本操作
    SQL中单引号的转义
    C# (输入输出流)
    C# 文件与目录的基本操作(System.IO)
    数据库对象命名
    .Net 中的反射(反射特性) Part.3 (转载)
    C# 中的委托和事件(详解)
    SQL Server TransactSQL 编程
    Brush 色谱
  • 原文地址:https://www.cnblogs.com/warrior/p/13353383.html
Copyright © 2011-2022 走看看