java实现循环队列操作
使用 类 模拟定义队列
public class LoopQueue {
int maxSize;
int front;
int rear;
Object[] array;
public LoopQueue(int maxSize) {
front=0;
rear=0;
this.array = new Object[maxSize];
this.maxSize=maxSize;
}
public void enQueue(Object obj) {
if((rear+1)%maxSize==front) {
System.out.println("队满,入队失败");
throw new RuntimeException("队满无法入队!");
}else {
rear++;
array[rear%maxSize]=obj;
}
}
public Object deQueue() {
if(rear==front) {
System.out.println("队空,出队失败");
throw new RuntimeException("队空无法出队!");
}else {
front++;
Object objTemp = array[front%maxSize];
array[front%maxSize] = null;
return objTemp;
}
}
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(array[1]);
sb.append("—————————");
sb.append(array[2]);
sb.append("—————————");
sb.append(array[3]);
sb.append("\n| |");
sb.append("\n| |");
sb.append("\n| |");
sb.append("\n");
sb.append(array[7]);
sb.append(" ");
sb.append(array[4]);
sb.append("\n| |");
sb.append("\n| |");
sb.append("\n| |");
sb.append("\n");
sb.append(array[6]);
sb.append("———————————————————");
sb.append(array[5]);
String s = ""+sb;
String str = s.replaceAll("null", "*");
return str;
}
}
测试类
public class Test {
public static void main(String[] args) {
LoopQueue queue = new LoopQueue(8);
for(int i = 0;i<4;i++) {
queue.enQueue(i);
}
System.out.println("入队4个元素后队列状态:");
System.out.println(queue);
Object e1 = queue.deQueue();
Object e2 = queue.deQueue();
System.out.println("出队元素:"+e1+","+e2);
System.out.println("出队2个元素后队列状态:");
System.out.println(queue);
Object e3 = queue.deQueue();
Object e4 = queue.deQueue();
System.out.println("出队元素:"+e3+","+e4);
System.out.println("再出队2个元素后队列状态:");
System.out.println(queue);
for(int i = 0;i<7;i++) {
queue.enQueue(i);
}
System.out.println("再入队7个元素后队列状态:");
System.out.println(queue);
}
}