欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[队列] 数组实现的队列

程序员文章站 2022-03-08 09:12:51
...

上代码

public class Queue<E> {

    // 元素
    private Object[] elements;

    // 队列的容量
    private int size = 0;

    // 每次扩容的增量
    private final int addCapacity = 10;

    public Queue() {
        elements = new Object[10];
    }

    public boolean isEmpty() {
        return size == 0;
    }

    public E peek() {
        if(isEmpty()) {
            return null;
        }
        return (E)elements[0];

    }

    public E pop() {
        if(isEmpty()) {
            return null;
        }
        E out = (E)elements[0];
        for(int i = 0; i < size - 1; i++) {
            elements[i] = elements[i + 1];
        }
        size--;
        return out;
    }

    public void push(E data) {
        ensureCapacity();
        elements[size++] = data;
    }

    private void ensureCapacity() {
        if(size >= elements.length) {
            elements = Arrays.copyOf(elements, size + addCapacity);
        }
    }

    public static void main(String[] args) {
        Queue<Integer> queue = new Queue<>();
        for(int i = 1; i < 15; i++) {
            queue.push(i);
        }
        while (queue.peek() != null) {
            System.out.println(queue.pop());
        }
    }
}

控制面板打印

1
2
3
4
5
6
7
8
9
10
11
12
13
14