当前位置:   article > 正文

循环队列(思路+代码)_循环队列代码

循环队列代码

变量:

头指针:front

尾指针:rear

最大长度:maxSize

数组队列:arr[]

思路:

front指向第一个有效数据

rear指向最后一个位置的下一个位置

 

公式:

是否为满:

(rear + 1)%maxSize == front

是否为空

rear == front

打印

print(arr【i】 % maxSize)

入队、出队

front = (front + 1) % maxSize;

rear = (rear + 1) % maxSize;

  1. package sparseArr;
  2. import java.util.Scanner;
  3. public class SparseArray {
  4. public static void main(String[] args) {
  5. Query q = new Query(4);
  6. char k = ' ';
  7. Scanner sc = new Scanner(System.in);
  8. boolean loop = true;
  9. while(loop) {
  10. System.out.println("s(Show)");
  11. System.out.println("e(exit)");
  12. System.out.println("a(add)");
  13. System.out.println("g(get)");
  14. System.out.println("h(head)");
  15. k = sc.next().charAt(0);
  16. switch(k) {
  17. case 's':
  18. q.print();
  19. break;
  20. case 'e':
  21. sc.close();
  22. loop = false;
  23. break;
  24. case 'a':
  25. System.out.print("输入一个数:");
  26. int n = sc.nextInt();
  27. q.push(n);
  28. break;
  29. case 'g':
  30. int res = q.pop();
  31. System.out.println("取出的数据是:" + res);
  32. break;
  33. case 'h':
  34. int res1 = q.headQueue();
  35. System.out.println("头数据:"+res1);
  36. break;
  37. }
  38. }
  39. }
  40. }
  41. class Query{
  42. private int maxSize;
  43. private int rear;
  44. private int front;
  45. private int[] arr;
  46. public Query(int maxSize) {
  47. this.maxSize = maxSize;
  48. rear = 0;
  49. front = 0;
  50. arr = new int[maxSize];
  51. }
  52. public int headQueue() {
  53. if(isEmpty()) {
  54. System.out.print("队列为空");
  55. return -1;
  56. }
  57. return arr[front];
  58. }
  59. public boolean isFull() {
  60. return (rear + 1) % maxSize == front;
  61. }
  62. public boolean isEmpty() {
  63. return rear == front;
  64. }
  65. public void push(int val) {
  66. if(isFull()) {
  67. System.out.println("队列为满!");
  68. return;
  69. }
  70. arr[rear] = val;
  71. rear = (rear + 1) % maxSize;
  72. }
  73. public int pop() {
  74. if(isEmpty()) {
  75. System.out.println("队列为空!");
  76. return -1;
  77. }
  78. int val = arr[front];
  79. front = (front + 1) % maxSize;
  80. return val;
  81. }
  82. public void print() {
  83. if(isEmpty()) {
  84. System.out.println("队列为空!");
  85. }
  86. for(int i = front; i <= usefulVal();i++) {
  87. System.out.printf("arr[%d] = %d\n",i % maxSize,arr[i % maxSize]);
  88. }
  89. }
  90. public int usefulVal() {
  91. return (rear + maxSize - front) % maxSize;
  92. }
  93. public int peak() {
  94. if(isEmpty()) {
  95. System.out.println("队列为空!");
  96. return -1;
  97. }
  98. int val = arr[(front+1)%maxSize];
  99. return val;
  100. }
  101. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/798815
推荐阅读
相关标签
  

闽ICP备14008679号