Java数据结构与算法-队列(详细实现)

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 = 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
    **/
public class SequentialQueueTest {
@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数据结构与算法-队列(详细实现)】}

    推荐阅读