数组实现队列

复制代码
/**
 * @author:liuxincheng
 * @description:
 * @date:created in 2019/1/22 13:49
 * @modified by liuxincheng
 */

public class ArrayQueue<T> {
    /**
     * 队列数组
     */
    private T[] queue;
    /**
     * 头下标
     */
    private int head;
    /**
     * 尾下标
     */
    private int tail;
    /**
     * 元素个数
     */
    private int count;

    public ArrayQueue() {
        queue = (T[]) new Object[10];
        // 头下标为零
        this.head = 0;
        this.tail = 0;
        this.count = 0;
    }

    public ArrayQueue(int size) {
        queue = (T[]) new Object[size];
        this.head = 0;
        this.tail = 0;
        this.count = 0;
    }

    /**
     * 入队
     *
     * @param t
     * @author: liuxincheng
     * @date: 2019/1/22 13:53
     * @return: boolean
     */
    public boolean inQueue(T t) {
        if (count == queue.length) {
            return false;
        }
        // 如果不为空就放入下一个
        queue[tail++ % (queue.length)] = t;
        count++;
        return true;
    }

    /**
     * 出队
     *
     * @param
     * @author: liuxincheng
     * @date: 2019/1/22 13:54
     * @return: T
     */
    public T outQueue() {
        // 如果是空的那就不能再出栈了
        if (count == 0) {
            return null;
        }
        count--;
        return queue[head++ % (queue.length)];
    }

    /**
     * 查队列
     *
     * @param
     * @author: liuxincheng
     * @date: 2019/1/22 13:55
     * @return: T
     */
    public T showHead() {
        if (count == 0) {
            return null;
        }
        return queue[head];
    }

    /**
     * 判满
     *
     * @param
     * @author: liuxincheng
     * @date: 2019/1/22 13:56
     * @return: boolean
     */
    public boolean isFull() {
        return count == queue.length;
    }

    /**
     * 判空
     *
     * @param
     * @author: liuxincheng
     * @date: 2019/1/22 13:56
     * @return: boolean
     */
    public boolean isEmpty() {
        return count == 0;
    }
}
复制代码

 

posted @   如果屈原会编程  阅读(347)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2018-01-22 JDK1.8在LINUX下安装步骤
2018-01-22 ecplise部署gradle web项目
2018-01-22 MyEclipse 2016 CI修改web项目context-root
2018-01-22 eclispe创建gradle项目
2018-01-22 Spring事务核心接口
点击右上角即可分享
微信分享提示