Java数据结构与算法之队列

偏执的太偏执、 2022-08-09 15:52 348阅读 0赞

队列的知识点也不是很复杂,所以直接上代码

  1. package com.wayne.QueueX;
  2. /* * 1, 队列特性:先进先出。 * 2, 折断的序列:队列中的数据项存在数组两个不同的序列中。 * 3, 队列的两个基本操作: * a) 插入一个数据项:把数据项放入队尾 * b) 删除一个数据项:移除队头数据 * 4, 队列的效率 * 队列的插入和移除数据项的时间复杂度均为O(1). */
  3. public class MyQueue {
  4. /* * 队列需要有五个元素: * 队列的最大长度maxSize,队列的实际类型queArray, * 队头索引front,队尾索引rear,队列的实际个数nItems */
  5. private int maxSize;
  6. private int[] queArray;
  7. private int front;
  8. private int rear;
  9. private int nItems;
  10. /** * 初始化一个长度为length的空队列 * @param length 队列的预计长度 */
  11. public MyQueue(int length){
  12. maxSize = length;
  13. queArray = new int[maxSize];
  14. front = 0;//队头删除元素
  15. rear = -1;//队尾插入元素
  16. nItems=0;
  17. }
  18. /** * 向队尾插入一个元素 * @param i 待插入的元素 */
  19. public void insert(int i){
  20. if(rear == maxSize -1)
  21. rear = -1;
  22. queArray[++rear] = i;
  23. nItems++;
  24. }
  25. /** * 从队头删除一个元素 * @return 返回移除的元素 */
  26. public int remove(){
  27. int temp = queArray[front++];
  28. if(front == maxSize)
  29. front = 0;
  30. nItems--;
  31. return temp;
  32. }
  33. /** * 判断队列是否为空, * @return 如果为空,则返回true;如果不为空,则返回false; */
  34. public boolean isEmpty(){
  35. return nItems == 0;
  36. }
  37. /** * 判断队列是否满 * @return 如果为满,则返回true;如果不满,则返回false; */
  38. public boolean isFull(){
  39. return nItems == maxSize;
  40. }
  41. /** * 获取队列的实际长度 * @return 返回队列的实际长度 */
  42. public int size()
  43. {
  44. return nItems;
  45. }
  46. }

测试用例

  1. package com.wayne.test;
  2. import com.wayne.QueueX.MyQueue;
  3. public class MyQueueTest {
  4. public static void main(String[] args) {
  5. MyQueue myQueue = new MyQueue(5);
  6. myQueue.insert(4);
  7. myQueue.insert(5);
  8. myQueue.insert(2);
  9. myQueue.insert(1);
  10. myQueue.insert(6);
  11. myQueue.insert(7);
  12. myQueue.insert(8);
  13. myQueue.insert(9);
  14. System.out.println("the length of the array is "+myQueue.size());
  15. while(!myQueue.isEmpty())
  16. {
  17. System.out.println(myQueue.remove());
  18. }
  19. }
  20. }

发表评论

表情:
评论列表 (有 0 条评论,348人围观)

还没有评论,来说两句吧...

相关阅读

    相关 数据结构算法-队列

    什么是队列 队列是一种特殊的线性表,说特殊是因为它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。

    相关 数据结构算法队列

    基本介绍 队列是一个有序列表,可以使用数组或链表来实现。 队列遵循先进先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出。 数组模拟队列 因为队列的输

    相关 数据结构算法队列

    前言 队列是一个有序的线性列表,可以用数组或链表来实现,遵循先进先出、后进后出的原则。 队列只能从列表的一端进行入队另一端进行出队操作。 队列有两种存储数据的形式: