[数据结构]-数组实现队列(普通)
1 首指针
2 尾指针
不是循环队列,将前方空出来的位置,依次向前移动
package com.cn.jichu.day09; public class Queue<E> { /** * 数组 */ private E[] data; /** * 首指针 */ private int head; /** * 尾指针 */ private int tail; /** * 当前队列大小 */ private int size; public Queue(int size) { data = (E[]) new Object[size]; this.size = size; } public void enqueue(E e){ if(tail == size){ //当尾部满了,头未移动那么说明满了 if(head == 0){ throw new IllegalArgumentException("当前队列满了"); }else{ //头移动了,说明前方有位置 //一下操作,为向前移动 for(int i = head;i<tail;i++){ data[i - head] = data[i]; } tail = tail - head; head = 0; } } data[tail] = e; tail ++; } public E dequeue(){ if(head == tail){ throw new IllegalArgumentException("当前队列没有元素可以出列了"); } E e = data[head]; data[head] = null; head ++; return e; } @Override public String toString(){ StringBuilder ret = new StringBuilder(); ret.append("queue head["); for(int i=0;i<data.length;i++){ ret.append(data[i] + " "); } ret.append(" ] tail"); return ret.toString(); } }