共计 1865 个字符,预计需要花费 5 分钟才能阅读完成。
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();}
}
正文完