队列的实现

基于顺序表的队列:

package StackExercise;

public class OrderQueue<T> {
   //默认的最大长度
   public static final int DEFAULT_SIZE = 20;
   //最大长度
   private int maxSize;
   //当前队列
   private Object[] objs;
   //队列头
   private int head;
   //队列尾
   private int tail;
   //队列长度
   private int size;

   //初始化
   public OrderQueue() {
       this(DEFAULT_SIZE);
   }

   //初始化
   public OrderQueue(int size) {
       head = 0;
       tail = 0;
       maxSize = size;
       objs = new Object[maxSize];
   }

   //获取队列长度
   public int getLength() {
       return size;
   }

   //出队
   public T deQueue() {
       T ret = null;
       if (size <= 0) {
           throw new RuntimeException("队列为空!");
       } else {
           size--;
           ret = (T) objs[head];
           objs[head] = null;
           head = ++head % maxSize;
       }
       return ret;

   }

   //入队
   public void enQueue(T t) {
       if (size == maxSize) {
           throw new RuntimeException("队列已满!");
       } else {
           size++;
           objs[tail] = (Object) t;
           tail = ++tail % maxSize;
       }
   }

   //打印
   public void print() {
       int start = head;
       while (start != tail) {
           System.out.print(objs[start] + "\n");
           start = ++start % maxSize;
       }
   }
}

基于链表形式的有空再补充。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线...
    堤岸小跑阅读 2,910评论 0 2
  • 链表的基本操作 定义 从链表头部插入元素 从链表头部删除元素 从链表尾部插入元素 从中间插入和删除结点 栈和对列的...
    gskobe0811阅读 3,207评论 0 2
  • 一、概述 由于队列有元素出列,front就向后移动,所以队列前面的空间就空了出来。为了更合理的利用空间,将队列的首...
    saviochen阅读 5,034评论 0 3
  • 颜陵作为丞相之子,一直都是夜宸惜得力的臣子手下,只要是夜宸惜想要的东西,即使远在天边,颜陵也会给他找到,颜陵说过“...
    东乐双子年华似水阅读 2,860评论 0 2
  • 瓷都 有干净的街道 路旁的落叶乔木 金黄色的 很亮 马路很干净 ...
    青黛淡竹叶阅读 2,405评论 2 0