2.数组模拟环形队列
package queue;
public class ArrayQueue<T>{
private int front;//队列头,指向队列的第一个位置
private int rear;//队列尾,指向队列元素最后一个位置的下一个元素
private int maxSize;//数组容量
private T[] arr;//存储队列的数组
public ArrayQueue(){
this.front = 0;
this.rear = 0;
this.maxSize = 5;//默认队列容量是5
this.arr = (T[]) new Object[maxSize];
}
public ArrayQueue(int maxSize) {
this.front = 0;
this.rear = 0;
this.maxSize = maxSize;
this.arr = (T[]) new Object[maxSize];
}
/**
* 判断队列是否为空
* @return true表示队列为空
*/
public boolean isEmpty() {
if(front == rear) {
return true;
}
return false;
}
/**
* 判断队列是否为满
* @return true表示队列为满
*/
public boolean isFull() {
if((rear + 1)%maxSize == front) {
return true;
}
return false;
}
/**
* 添加一个元素
* @param t
*/
public void add(T t) {
if(this.isFull()) {
System.out.println("队列已满!");
return;
}
arr[rear] = t;
rear = (rear + 1) % maxSize;
}
/**
* 出队
* @return 返回队头元素
*/
public T delete() {
if(this.isEmpty()) {
System.out.println("队列为空!");
return null;
}
T t = arr[front];
front = (front + 1) % maxSize;
return t;
}
//获取队头元素值,但不取出
public T getHead() {
if(isEmpty()) {
System.out.println("队列为空!");
return null;
}
return arr[front];
}
//获取队列长度
public int size() {
if (isEmpty()) {
return 0;
}
return (rear-front+maxSize)%maxSize;
}
//展示队列
public void show() {
if (isEmpty()) {
System.out.println("队列为空!");
return;
}
int size = size();
for(int i=0;i<size;i++) {
System.out.println(arr[(front+i)%maxSize]);
}
}
}
java
滴水穿石、燕子衔泥,点点滴滴都是添补

浙公网安备 33010602011771号