队列(queue)是一种线性数据结构,队列中的元素只能先入先出(First In First Out,简称 FIFO)。
队列的出口端叫作队头(front),队列的入口端叫作队尾(rear)。
队列这种数据结构既可以用数组来实现,也可以用链表来实现。
- 数组实现
用数组实现时,为了入队操作的方便,把队尾位置规定为最后入队元素的下一个位置用数组实现的队列叫做顺序队列。
- 入队
入队(enqueue)就是把新元素放入队列中,只允许在队尾的位置放入元素,新元素的下一个位置将会成为新的队尾。
*出队
出队操作(dequeue)就是把元素移除队列,只允许在队头一侧移出元素,出队元素的后一个元素将会成为新的队头。
*总结:队尾入队,队头出队。
package dataStruct.queue; import java.net.BindException; public class QueueByArrary测试结果implements Queue { E [] arr = null; int head = 0; //队头 int tail = 0; //队尾 public QueueByArrary(int n){ arr = (E[]) new Object[n]; } @Override public int size() { return tail; } @Override public boolean isEmpty() { return tail == 0; } @Override public void clear() { arr = null; } @Override public void enQueue(E element) { try { if (tail == arr.length) throw new IndexOutOfBoundsException("数组容量不够 :"+ tail +"数组长度为:"+ arr.length); arr[tail] = element; tail++; }catch (Exception e){ e.printStackTrace(); } } @Override public E deQueue() { if (head == tail ) return null; E num = arr[head]; head++; return num; } public static void main(String[] args) { QueueByArrary arrQueue = new QueueByArrary(5); arrQueue.enQueue(1); arrQueue.enQueue(2); arrQueue.enQueue(3); arrQueue.enQueue(4); arrQueue.enQueue(5); for (int i = arrQueue.head ; i < arrQueue.tail; i++){ System.out.print(arrQueue.arr[i]+" "); } System.out.println(); System.out.println("出队:"+arrQueue.deQueue()); //剩余队列 for (int i = arrQueue.head ; i < arrQueue.tail; i++){ System.out.print(arrQueue.arr[i]+" "); } } }



