分类: Java
2021-07-27 17:18:04
package com.fc.queue;
/**
* @ClassName SequentialQueue 顺序队列
* @Description 保持队头始终在索引为0的位置
* @Author Fclever
* @Date 2021/7/2 15:59
**/
public class SequentialQueue
/**
* 队列默认长度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];
// 其他往前移动
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
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();
}
}