一言以蔽之
银行排队,从头出,从尾巴进。
数组特征
- 最大数量:满了再进,报异常。
- 数组长度:够用即可。
- 头部:从此处取数据。
- 尾部:从此处加数据。
状态
- 空列:头=尾
- 满列:尾-头>=最大数量
入队列
判满,报异常。
加入尾部,尾部指针后移。
出队列
判空,报异常。
取出头部,头部指针后移。
数组实现的特点
会慢慢往后移动。
属性设计
public class ArrayQueue {
private final Integer maxSize = 5;
private Integer bottom = 0;
private Integer top = 0;
private String[] arr = new String[24];
}
判断空列or满列
public Boolean isFull() {
return top - bottom >= maxSize;
}
public Boolean isEmpty() {
return top.equals(bottom);
}
入列出列
public ArrayQueue addOne(String s) {
if (isFull()) {
throw new RuntimeException("满啦");
}
arr[top] = s;
top++;
return this;
}
public String removeOne() {
if (isEmpty()) {
throw new RuntimeException("没啦");
}
String s = arr[bottom];
arr[bottom] = null;
bottom++;
return s;
}
全部代码
public class ArrayQueue {
private final Integer maxSize = 5;
private Integer bottom = 0;
private Integer top = 0;
private final String[] arr = new String[24];
public static void main(String[] args) {
fun4();
}
//入6
public static void fun1() {
ArrayQueue queue = new ArrayQueue();
System.out.println("初始" + queue);
queue.addOne("A").addOne("B").addOne("C").addOne("D").addOne("E").addOne("F");
System.out.println("入六" + queue);
}
//空出
public static void fun2() {
ArrayQueue queue = new ArrayQueue();
System.out.println("初始" + queue);
System.out.println(queue.removeOne());
System.out.println("出一" + queue);
}
//入5出5
public static void fun3() {
ArrayQueue queue = new ArrayQueue();
System.out.println("初始" + queue);
queue.addOne("A").addOne("B").addOne("C").addOne("D").addOne("E");
System.out.println("入五" + queue);
System.out.println(queue.removeOne());
System.out.println(queue.removeOne());
System.out.println(queue.removeOne());
System.out.println(queue.removeOne());
System.out.println(queue.removeOne());
System.out.println("出五" + queue);
}
//入1出1,重复10遍
public static void fun4() {
ArrayQueue queue = new ArrayQueue();
System.out.println("初始" + queue);
System.out.println(queue.addOne("A"));
System.out.println(queue.removeOne());
System.out.println(queue.addOne("B"));
System.out.println(queue.removeOne());
System.out.println(queue.addOne("C"));
System.out.println(queue.removeOne());
System.out.println(queue.addOne("D"));
System.out.println(queue.removeOne());
System.out.println(queue.addOne("E"));
System.out.println(queue.removeOne());
System.out.println(queue.addOne("F"));
System.out.println(queue.removeOne());
System.out.println(queue.addOne("G"));
System.out.println(queue.removeOne());
System.out.println(queue.addOne("H"));
System.out.println(queue.removeOne());
System.out.println(queue.addOne("I"));
System.out.println(queue.removeOne());
System.out.println(queue.addOne("J"));
System.out.println(queue.removeOne());
System.out.println("结果" + queue);
}
@Override
public String toString() {
return "ArrayQueue{maxSize=" + maxSize + ", bottom=" + bottom + ", top=" + top + "}\n" + Arrays.toString(arr);
}
public Boolean isFull() {
return top - bottom >= maxSize;
}
public Boolean isEmpty() {
return top.equals(bottom);
}
public ArrayQueue addOne(String s) {
if (isFull()) {
throw new RuntimeException("满啦");
}
arr[top] = s;
top++;
return this;
}
public String removeOne() {
if (isEmpty()) {
throw new RuntimeException("没啦");
}
String s = arr[bottom];
arr[bottom] = null;
bottom++;
return s;
}
}