队列(queue)是插入在表的末端,删除是在表的开头。对队列的基本操作是 enqueue(入队)和 dequeue(出队),入队是在表的末端(队尾)插入一个元素,出队是在表的开头(队头)删除一个元素
队列模型说明:通过 enqueue 向队列输入,通过 dequeue 向队列输出
-
- 队列的数组实现
public class ArrayQueue<T> { //设置为2是为了检验ensureCapacity()方法的正确性 private Object[] data = new Object[2]; private int size; //是否空队列 public boolean empty() { return size == 0; } //入队 public void enqueue(T t) { ensureCapacity(); data[size++] = t; } //出队 public T dequeue() { T t = (T) data[0]; for (int i = 0; i < size - 1; i++) { data[i] = data[i + 1]; } size--; return t; } //确保容量 private void ensureCapacity() { if (size < data.length) { return; } data = Arrays.copyOf(data, data.length + (data.length >> 1)); } public static void main(String[] args) { ArrayQueue<String> queue = new ArrayQueue<>(); char c[] = "Array Queue".toCharArray(); for (int i = 0; i < c.length; i++) { queue.enqueue(String.valueOf(c[i])); } while (!queue.empty()) { System.out.print(queue.dequeue()); } } }
- 队列的数组实现
- 队列的链表实现