Java数据结构与算法-队列(详细实现)
package com.fc.queue;
/**
- @ClassName SequentialQueue 顺序队列
- @Description 保持队头始终在索引为0的位置
- @Author Fclever
- @Date 2021/7/2 15:59
**/
/**
* 队列默认长度10
*/
private static final int MAXLEN = 10;
/**
* 存储数据数组
*/
Object[] queueData;
/**
* 队尾索引
*队列为空,指向-1,否则,始终指向队尾元素n
*/
int tail;
public SequentialQueue() {
}
/**
* 1. 初始化队列
*/
public void initQueue() {
// 初始化存储数组
this.queueData = https://www.it610.com/article/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 = https://www.it610.com/article/(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
**/
@Test
public void testSequentialQueueTest() {
SequentialQueue 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();
}
【Java数据结构与算法-队列(详细实现)】}
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- Docker应用:容器间通信与Mariadb数据库主从复制
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 第326天
- Shell-Bash变量与运算符
- 事件代理
- 逻辑回归的理解与python示例
- Guava|Guava RateLimiter与限流算法
- Java|Java OpenCV图像处理之SIFT角点检测详解
- 我和你之前距离