You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
package class03;
|
|
|
|
|
|
|
|
|
|
public class Code04_RingArray {
|
|
|
|
|
|
|
|
|
|
public static class MyQueue {
|
|
|
|
|
private int[] arr;
|
|
|
|
|
private int pushi;// end
|
|
|
|
|
private int polli;// begin
|
|
|
|
|
private int size;
|
|
|
|
|
private final int limit;
|
|
|
|
|
|
|
|
|
|
public MyQueue(int limit) {
|
|
|
|
|
arr = new int[limit];
|
|
|
|
|
pushi = 0;
|
|
|
|
|
polli = 0;
|
|
|
|
|
size = 0;
|
|
|
|
|
this.limit = limit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void push(int value) {
|
|
|
|
|
if (size == limit) {
|
|
|
|
|
throw new RuntimeException("队列满了,不能再加了");
|
|
|
|
|
}
|
|
|
|
|
size++;
|
|
|
|
|
arr[pushi] = value;
|
|
|
|
|
pushi = nextIndex(pushi);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int pop() {
|
|
|
|
|
if (size == 0) {
|
|
|
|
|
throw new RuntimeException("队列空了,不能再拿了");
|
|
|
|
|
}
|
|
|
|
|
size--;
|
|
|
|
|
int ans = arr[polli];
|
|
|
|
|
polli = nextIndex(polli);
|
|
|
|
|
return ans;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public boolean isEmpty() {
|
|
|
|
|
return size == 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 如果现在的下标是i,返回下一个位置
|
|
|
|
|
private int nextIndex(int i) {
|
|
|
|
|
return i < limit - 1 ? i + 1 : 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|