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

2次阅读

共计 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();}

}

正文完
 0