队列是一种特殊的线性表,仅能在两端进行操作,队头可以进行取数据操作,队尾进行插入数据操作。
队列的特性是先进先出。
/**
* 自定义队列
*
*/
public class MyQueue {
private Object[] queueArray;
// 队列总大小
private int capacity;
// 前端下标
private int front;
// 后端下标
private int rear;
// 队列中元素的实际数目
private int size;
public MyQueue(int s) {
capacity = s;
queueArray = new Object[capacity];
front = 0;
rear = -1;
size = 0;
}
// 队列中新增数据
public void insert(int value) {
if (isFull()) {
System.out.println("队列已满!!!");
} else {
// 如果队列尾部指向顶了,那么循环回来,执行队列的第一个元素
if (rear == capacity - 1) {
rear = -1;
}
// 队尾指针加1,然后在队尾指针处插入新的数据
queueArray[++rear] = value;
size++;
}
}
// 移除数据
public Object remove() {
Object removeValue = null;
if (!isEmpty()) {
removeValue = queueArray[front];
queueArray[front] = null;
front++;
if (front == capacity) {
front = 0;
}
size--;
return removeValue;
}
return removeValue;
}
// 查看队头数据
public Object peekFront() {
return queueArray[front];
}
// 判断队列是否满了
public boolean isFull() {
return (size == capacity);
}
// 判断队列是否为空
public boolean isEmpty() {
return (size == 0);
}
// 返回队列的大小
public int getSize() {
return size;
}
}