用数组实现简单队列

书中人 2024年01月15日 464次浏览

用数组实现简单队列

  1. public class ArrayQueue {
  2. //定义一个数组
  3. private int[] quere;
  4. //定义一个队列长度
  5. private int size = 0;
  6. //定义一个首位
  7. private int first = 0;
  8. //定义一个结尾
  9. private int end = -1;

  10. //初始化队列大小
  11. private ArrayQueue() {
  12. }

  13. public ArrayQueue(int size) {
  14. quere = new int[size];
  15. first = 0;
  16. end= -1;
  17. size = 0;
  18. }

  19. public boolean isFull() {
  20. if (size >= quere.length) {
  21. throw new NoSuchElementException("队列已满");
  22. }
  23. return false;
  24. }
  25. public boolean isEmpty(){
  26. return size == 0;
  27. }

  28. //入队
  29. public void enqueue(int data) {
  30. //判断是否已经满了
  31. if (!this.isFull()) {
  32. end = (end + 1) % quere.length;
  33. quere[end] = data;
  34. size++;
  35. }
  36. }

  37. //查看队首
  38. public int peek() {
  39. if (isEmpty()) {
  40. throw new NoSuchElementException("队列为空");
  41. }
  42. return quere[first];
  43. }

  44. //出队
  45. public int dequeue() {
  46. if (isEmpty()) {
  47. throw new NoSuchElementException("队列为空");
  48. }
  49. int val = quere[first];
  50. first = (first + 1) % quere.length;
  51. size--;
  52. return val;
  53. }

  54. public static void main(String[] args) {
  55. ArrayQueue arrayQueue = new ArrayQueue(8);
  56. arrayQueue.enqueue(0);
  57. arrayQueue.enqueue(1);
  58. arrayQueue.enqueue(2);
  59. arrayQueue.enqueue(3);
  60. arrayQueue.enqueue(4);
  61. arrayQueue.enqueue(5);
  62. arrayQueue.enqueue(6);
  63. arrayQueue.enqueue(7);
  64. System.out.println(Arrays.toString(arrayQueue.quere));
  65. System.out.println(arrayQueue.peek());
  66. System.out.println(Arrays.toString(arrayQueue.quere));
  67. System.out.println(arrayQueue.dequeue());
  68. System.out.println(arrayQueue.dequeue());
  69. System.out.println(Arrays.toString(arrayQueue.quere));
  70. arrayQueue.enqueue(8);
  71. arrayQueue.enqueue(9);
  72. System.out.println(Arrays.toString(arrayQueue.quere));
  73. System.out.println(arrayQueue.dequeue());
  74. System.out.println(arrayQueue.dequeue());
  75. System.out.println(Arrays.toString(arrayQueue.quere));
  76. System.out.println(arrayQueue.peek());
  77. arrayQueue.enqueue(10);
  78. arrayQueue.enqueue(11);
  79. arrayQueue.enqueue(12);
  80. System.out.println(Arrays.toString(arrayQueue.quere));
  81. }