队列是一种先进先出的数据结构,插入操作发生在队列尾部,删除操作发生在队列头部。
package dataStructure.sortTest;
/**
* 队列
*
* @author lyq
* @create 5/6/19
*/
public class MyQueue {
/**
* 存放数据的数组
*/
private int[] data;
/**
* 队列大小
*/
private int size;
/**
* 队列中元素个数
*/
private int num;
/**
* 头指针
*/
private int head;
/**
* 尾指针
*/
private int tail;
public MyQueue(int size) {
this.size = size;
data = new int[size];
num = 0;
head = 0;
tail = -1;
}
/**
* 插入元素
*/
public void insert(int n){
if (isFull()) {
System.out.println("队列已满!");
return;
}
//循环队列的保证
tail = (++tail)%size;
data[tail] = n;
num++;
}
/**
* 移除元素队列头部元素并返回当前队列头部元素,
*/
public int remove(){
if (isEmpty()) {
System.out.println("队列为空!");
return -1;
}
head = head%size;
num--;
return data[head++];
}
/**
* 获取队列头部元素
*/
public int peek(){
if (isEmpty()) {
System.out.println("队列为空!");
return -1;
}
return data[head];
}
/**
* 判断队列是否已满
* @return
*/
public boolean isFull() {
return num == size;
}
/**
* 判断队列是否为空
*/
public boolean isEmpty(){
return num == 0;
}
}