• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:Java数据结构与算法队列详细实现

java 搞代码 4年前 (2022-01-28) 28次浏览 已收录 0个评论

package com.fc.queue;
/**

  • @ClassName SequentialQueue 程序队列
  • @Description 放弃队头始终在索引为0的地位
  • @Author Fclever
  • @Date 2021/7/2 15:59
    **/

public class SequentialQueue<T> {

/**
 * 队列默认长度10
 */
private static final int MAXLEN = 10;
/**
 * 存储数据数组
 */
Object[] queueData;
/**
 * 队尾索引
 *     队列为空,指向-1,否则,始终指向队尾元素n
 */
int tail;
public SequentialQueue() {
}
/**
 * 1. 初始化队列
 */
public void initQueue() {
    // 初始化存储数组
    this.queueData = new Object[MAXLEN];
    // 设置队尾
    this.tail = -1;
}
/**
 * 2. 销毁队列
 */

// public void destroyQueue() {
//
// }

/**
 * 3. 清空队列
 */
public void clearQueue() {
    for (int i = 0; i<=this.tail;i++){
        this.queueData[i] = null;
    }
    this.tail = -1;
}
/**
 * 4. 判断队列是否为空
 * @return
 */
public boolean queueEmpty() {
    return this.tail == -1;
}
/**
 * 5. 获取队头元素
 * @return
 */
public T getHead() {
    return (T) this.queueData[0];
}
/**
 * 6. 入队
 * @param data  入队元素
 */
public void enQueue(T data) {
    // 判断队列是否满
    if (this.tail + 1 == this.MAXLEN) {
        throw new OutOfMemoryError();
    }
    // 插入元素
    this.queueData[++this.tail] = data;
}
/**
 * 7. 出队
 * @return 返回队头元素
 */
public T deQueue() {
    if (this.queueEmpty()) {
        return null;
    }
    // 返回值
    T data = (T) this.queueData[0];
    // [贝宝](https://www.gendan5.com/wallet/PayPal.html)其余往前挪动
    System.arraycopy(this.queueData, 1, this.queueData, 0, this.tail);
    this.queueData[this.tail--] = null;
    return data;
}
/**
 * 8. 获取队列理论元素个数
 * @return
 */
public int queueLength() {
    return this.tail+1;
}
/**
 * 9. 遍历元素
 */
public void getAll() {
    for (int i=0;i<=this.tail;i++){
        System.out.printf("第%d个元素为:%s\n",i,this.queueData[i]);
    }
}

}
测试
package com.fc.queue;
import org.junit.Test;
import static org.junit.Assert.*;
/**

  • @ClassName SequentialQueueTest
  • @Description
  • @Author Fclever
  • @Date 2021/7/5 13:20
    **/

public class SequentialQueueTest {

@Test
public void testSequentialQueueTest() {
    SequentialQueue<String> sequentialQueue = new SequentialQueue<>();
    sequentialQueue.initQueue();
    sequentialQueue.enQueue("1");
    sequentialQueue.enQueue("2");
    sequentialQueue.enQueue("3");
    sequentialQueue.enQueue("4");
    sequentialQueue.enQueue("5");
    System.out.println(sequentialQueue.queueLength());
    sequentialQueue.deQueue();
    sequentialQueue.deQueue();
    sequentialQueue.getAll();
}

}


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:Java数据结构与算法队列详细实现
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址