public class Queue {
private long[] queue;
private int maxSize;
private int front;
private int rear;
private int nItem;
public Queue(int maxSize) {
this.queue = new long[maxSize];
this.maxSize = maxSize;
this.front = 0;
this.rear = -1;
nItem = 0;
}
public void insert(long item){
if(rear==maxSize-1){
rear = -1;
}
queue[++rear] = item;
nItem++;
}
public long remove(){
nItem--;
long reItem = queue[front++];
if(front==maxSize){
front = 0;
}
return reItem;
}
public long peek(){
return queue[front];
}
public boolean isFull(){
return nItem==this.maxSize;
}
public boolean isEmpty(){
return nItem==0;
}
public int getLength(){
return nItem;
}
public static void main(String[] args){
Queue queue = new Queue(5);
queue.insert(0);
queue.insert(1);
queue.insert(2);
queue.insert(3);
System.out.println(queue.remove());
System.out.println(queue.remove());
queue.insert(4);
queue.insert(5);
queue.insert(6);
while(!queue.isEmpty()){
System.out.println(queue.remove());
}
queue.insert(7);
queue.insert(8);
queue.insert(9);
queue.insert(10);
while(!queue.isEmpty()){
System.out.println(queue.remove());
}
}
}
private long[] queue;
private int maxSize;
private int front;
private int rear;
private int nItem;
public Queue(int maxSize) {
this.queue = new long[maxSize];
this.maxSize = maxSize;
this.front = 0;
this.rear = -1;
nItem = 0;
}
public void insert(long item){
if(rear==maxSize-1){
rear = -1;
}
queue[++rear] = item;
nItem++;
}
public long remove(){
nItem--;
long reItem = queue[front++];
if(front==maxSize){
front = 0;
}
return reItem;
}
public long peek(){
return queue[front];
}
public boolean isFull(){
return nItem==this.maxSize;
}
public boolean isEmpty(){
return nItem==0;
}
public int getLength(){
return nItem;
}
public static void main(String[] args){
Queue queue = new Queue(5);
queue.insert(0);
queue.insert(1);
queue.insert(2);
queue.insert(3);
System.out.println(queue.remove());
System.out.println(queue.remove());
queue.insert(4);
queue.insert(5);
queue.insert(6);
while(!queue.isEmpty()){
System.out.println(queue.remove());
}
queue.insert(7);
queue.insert(8);
queue.insert(9);
queue.insert(10);
while(!queue.isEmpty()){
System.out.println(queue.remove());
}
}
}