基本概念

  • 队列是一种先进先出的数据结构 First In First Out(FIFO)

队列的实现

Queue

  • void enqueue(E) 入队 O(1)
  • E dequeue() 出队 O(n) (出队后,后买的元素都要向前挪)
  • E getFront() 获取队首元素 O(1)
  • int getSize() O(1)
  • boolean isEmpty() O(1)

    1. public class ArrayQueue<E> implements Queue<E> {
    2. private Array<E> array;
    3. public ArrayQueue(int capacity) {
    4. array = new Array<>(capacity);
    5. }
    6. public ArrayQueue() {
    7. array = new Array<>();
    8. }
    9. @Override
    10. public int getSize() {
    11. return array.getSize();
    12. }
    13. @Override
    14. public boolean isEmpty() {
    15. return array.isEmpty();
    16. }
    17. @Override
    18. public void enqueue(E e) {
    19. array.addLast(e);
    20. }
    21. @Override
    22. public E dequeue() {
    23. return array.removeFirst();
    24. }
    25. @Override
    26. public E getFront() {
    27. return array.getFirst();
    28. }
    29. @Override
    30. public String toString() {
    31. StringBuilder res = new StringBuilder();
    32. res.append("Queue: ");
    33. res.append("front: [");
    34. for (int i = 0; i < array.getSize(); i ++) {
    35. res.append(array.get(i));
    36. if (i != array.getSize() - 1) {
    37. res.append(", ");
    38. }
    39. }
    40. res.append("] tail");
    41. return res.toString();
    42. }
    43. public static void main(String[] args) {
    44. ArrayQueue<Integer> queue = new ArrayQueue<>();
    45. for (int i = 0; i < 10; i++) {
    46. queue.enqueue(i);
    47. System.out.println(queue);
    48. if (i % 3 == 2) {
    49. queue.dequeue();
    50. System.out.println(queue);
    51. }
    52. }
    53. }
    54. }