队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表(零个或多个数据元素的有限序列,有顺序)
代码(缺点:队列中会空出一个位置不被使用)
public class Queue {
Object[] container;
int front = 0;
int rear = 0;
public Queue(int size) {
if (size > 0) {
container = new Object[size];
} else {
throw new RuntimeException();
}
}
public Queue() {
container = new Object[10];
}
public int getSize() {
return (rear - front + container.length) % container.length;
}
public void push(Object o) {
if ((rear + 1) % container.length != front) {
container[rear] = o;
rear = (rear + 1) % container.length;
} else {
throw new ArrayIndexOutOfBoundsException("数组满了");
}
}
public Object pop() {
if (front == rear) {
throw new ArrayIndexOutOfBoundsException("数组空了");
}
Object re = container[front];
front=(front+1)%container.length;
return re;
}
public static void main(String[] args) {
Queue s = new Queue();
for (int i = 0; i < 9; i++) {
s.push(i);
System.out.println(String.format("队列中元素个数 %s",s.getSize()));
}
for (int i = 0; i < 9; i++) {
System.out.println(String.format("队列中删除的元素值是%s ,现在还有%s个元素",s.pop(),s.getSize()));
}
}
}