自己动手写数据结构之普通队列
2020-12-16 本文已影响0人
逍遥白亦
普通队列的实现
1 定义
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
类似于我们在星巴克排队买咖啡,先来先买。
2 基本操作和元素
入队
出队
队头
队尾
实现一个队列
public class NormalQueue<E> {
private E[] queueArray;
private int head;
private int tail;
private int maxSize;
private int length;
@SuppressWarnings("unchecked")
public NormalQueue(int maxSize) {
this.queueArray = (E []) new Object[maxSize];
this.head = 0;
this.tail = -1;
this.maxSize = maxSize;
this.length = 0;
}
boolean enQueue(E data) throws Exception {
if (isFull()){
throw new Exception("The Queue is Full");
}
queueArray[++tail] = data;
length++;
return true;
}
public E deQueue() throws Exception{
if (isEmpty()){
throw new Exception("The Queue is Empty");
}
E data = queueArray[head];
length--;
head++;
return data;
}
public E peekHead(){
return queueArray[head];
}
public E peekTail(){
if (isEmpty()){
return queueArray[head];
}
return queueArray[tail];
}
private boolean isEmpty(){
return length == 0;
}
private boolean isFull(){
return length == maxSize + 1;
}
}