队列的数组实现_JAVA描述《数据结构与算法分析》

简介:
package DataStructures;

public  class QueueArray  {
    static final int DEFAULT_CAPACITY = 10;

    private Object[] theArray;

    private int currentSize;

    private int front;

    private int back;

    /**
     * Construct the queue.
     * 
     
*/

    public QueueArray() {
        this(DEFAULT_CAPACITY);
    }


    /**
     * Construct the queue.
     * 
     * 
@param capacity
     
*/

    public QueueArray(int capacity) {
        theArray = new Object[capacity];
        MakeEmpty();
    }


    /**
     * Make the queue logically empty.
     * 
     
*/

    public void MakeEmpty() {
        currentSize = 0;
        front = 0;
        back = -1;
    }


    public boolean IsEmpty() {
        return currentSize == 0;
    }


    public boolean IsFull() {
        return currentSize == theArray.length;
    }


    /**
     * Get the least recently inserted item in the queue. Does not alter the
     * queue.
     * 
     * 
@return the least recently inserted item in the queue, or null, if empty.
     
*/

    public Object getFront() {
        if (IsEmpty())
            return null;
        return theArray[front];
    }


    /**
     * Insert a new item into the queue.
     * 
     * 
@param x
     *            the item to insert.
     * 
@throws Overflow
     *             if queue is full.
     
*/

    public void Enqueue(Object x) throws Overflow {
        if (IsFull())
            throw new Overflow();
        back = increment(back);
        theArray[back] = x;
        currentSize++;
    }


    /**
     * Internal method to increment with wraparound.
     * 
     * 
@param x
     *            any index in theArray`s range.
     * 
@return x+1,or 0,if x is at the end of theArray;
     
*/

    private int increment(int x) {
        if (++x == theArray.length)
            x = 0;
        return x;
    }


    /**
     * Return and remove the least recently inserted item from the queue.
     * 
     * 
@return the least recently inserted item, or null, if empty.
     
*/

    public Object Dequeue() {
        if (IsEmpty())
            return null;
        currentSize--;

        Object frontItem = theArray[front];
        theArray[front] = null;
        front = increment(front);
        return frontItem;
    }

}

本文转自冬冬博客园博客,原文链接:http://www.cnblogs.com/yuandong/archive/2006/09/11/500814.html ,如需转载请自行联系原作者
相关文章
|
3月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
99 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
24天前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
56 10
|
3月前
|
存储 缓存 算法
Java 数组
【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
39 4
|
3月前
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
45 2
|
3月前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
104 2
|
3月前
|
存储 算法 Java
带你学习java的数组军队列
带你学习java的数组军队列
41 0
|
9天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
139 80
|
3天前
|
机器学习/深度学习 算法
基于遗传优化的双BP神经网络金融序列预测算法matlab仿真
本项目基于遗传优化的双BP神经网络实现金融序列预测,使用MATLAB2022A进行仿真。算法通过两个初始学习率不同的BP神经网络(e1, e2)协同工作,结合遗传算法优化,提高预测精度。实验展示了三个算法的误差对比结果,验证了该方法的有效性。
|
5天前
|
机器学习/深度学习 数据采集 算法
基于PSO粒子群优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-GRU-SAM网络在时间序列预测中的应用。算法通过卷积层、GRU层、自注意力机制层提取特征,结合粒子群优化提升预测准确性。完整程序运行效果无水印,提供Matlab2022a版本代码,含详细中文注释和操作视频。适用于金融市场、气象预报等领域,有效处理非线性数据,提高预测稳定性和效率。
|
1天前
|
算法
基于梯度流的扩散映射卡尔曼滤波算法的信号预处理matlab仿真
本项目基于梯度流的扩散映射卡尔曼滤波算法(GFDMKF),用于信号预处理的MATLAB仿真。通过设置不同噪声大小,测试滤波效果。核心代码实现数据加载、含噪信号生成、扩散映射构建及DMK滤波器应用,并展示含噪与无噪信号及滤波结果的对比图。GFDMKF结合非线性流形学习与经典卡尔曼滤波,提高对非线性高维信号的滤波和跟踪性能。 **主要步骤:** 1. 加载数据并生成含噪测量值。 2. 使用扩散映射捕捉低维流形结构。 3. 应用DMK滤波器进行状态估计。 4. 绘制不同SNR下的轨迹示例。