当前位置:   article > 正文

java顺序结构顺序 队列---顺序存储(源代码)_数据结构的串的顺序存储代码java

数据结构的串的顺序存储代码java
  1. 1.public class SequenceQueue<T>
  2. 2.{
  3. 3. private int DEFAULT_SIZE = 10;
  4. 4. //保存数组的长度。
  5. 5. private int capacity;
  6. 6. //定义一个数组用于保存顺序队列的元素
  7. 7. private Object[] elementData;
  8. 8. //保存顺序队列中元素的当前个数
  9. 9. private int front = 0;
  10. 10. private int rear = 0;
  11. 11. //以默认数组长度创建空顺序队列
  12. 12. public SequenceQueue()
  13. 13. {
  14. 14. capacity = DEFAULT_SIZE;
  15. 15. elementData = new Object[capacity];
  16. 16. }
  17. 17. //以一个初始化元素来创建顺序队列
  18. 18. public SequenceQueue(T element)
  19. 19. {
  20. 20. this();
  21. 21. elementData[0] = element;
  22. 22. rear++;
  23. 23. }
  24. 24. /**
  25. 25. * 以指定长度的数组来创建顺序队列
  26. 26. * @param element 指定顺序队列中第一个元素
  27. 27. * @param initSize 指定顺序队列底层数组的长度
  28. 28. */
  29. 29. public SequenceQueue(T element , int initSize)
  30. 30. {
  31. 31. this.capacity = initSize;
  32. 32. elementData = new Object[capacity];
  33. 33. elementData[0] = element;
  34. 34. rear++;
  35. 35. }
  36. 36. //获取顺序队列的大小
  37. 37. public int length()
  38. 38. {
  39. 39. return rear - front;
  40. 40. }
  41. 41. //插入队列
  42. 42. public void add(T element)
  43. 43. {
  44. 44. if (rear > capacity - 1)
  45. 45. {
  46. 46. throw new IndexOutOfBoundsException("队列已满的异常");
  47. 47. }
  48. 48. elementData[rear++] = element;
  49. 49. }
  50. 50. //移除队列
  51. 51. public T remove()
  52. 52. {
  53. 53. if (empty())
  54. 54. {
  55. 55. throw new IndexOutOfBoundsException("空队列异常");
  56. 56. }
  57. 57. //保留队列的rear端的元素的值
  58. 58. T oldValue = (T)elementData[front];
  59. 59. //释放队列的rear端的元素
  60. 60. elementData[front++] = null;
  61. 61. return oldValue;
  62. 62. }
  63. 63. //返回队列顶元素,但不删除队列顶元素
  64. 64. public T element()
  65. 65. {
  66. 66. if (empty())
  67. 67. {
  68. 68. throw new IndexOutOfBoundsException("空队列异常");
  69. 69. }
  70. 70. return (T)elementData[front];
  71. 71. }
  72. 72. //判断顺序队列是否为空队列
  73. 73. public boolean empty()
  74. 74. {
  75. 75. return rear == front;
  76. 76. }
  77. 77. //清空顺序队列
  78. 78. public void clear()
  79. 79. {
  80. 80. //将底层数组所有元素赋为null
  81. 81. Arrays.fill(elementData , null);
  82. 82. front = 0;
  83. 83. rear = 0;
  84. 84. }
  85. 85. public String toString()
  86. 86. {
  87. 87. if (empty())
  88. 88. {
  89. 89. return "[]";
  90. 90. }
  91. 91. else
  92. 92. {
  93. 93. StringBuilder sb = new StringBuilder("[");
  94. 94. for (int i = front ; i < rear ; i++ )
  95. 95. {
  96. 96. sb.append(elementData[i].toString() + ", ");
  97. 97. }
  98. 98. int len = sb.length();
  99. 99. return sb.delete(len - 2 , len).append("]").toString();
  100. 100. }
  101. 101. }
  102. 102.}


队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,只允许在表的后端(rear)进行插入操作。

 

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

闽ICP备14008679号