package com.coding.basic.queue;
import java.util.NoSuchElementException;
/**
* Created by bobi on 2017/4/1.
* at code2017
*/
public class ArrayQueue<T> implements Queue<T> {
private int size;
private Object[] dataArray;
private int front;
private int rear;
public ArrayQueue(int Capacity) {
this.dataArray = new Object[Capacity];
this.front = 0;
this.rear = 0;
this.size = 0;
}
@Override
public boolean add(T t) {
if (offer(t)){
return true;
}else {
throw new IllegalStateException();
}
}
@Override
public boolean offer(T t) {
if (size >= dataArray.length){
return false;
}
dataArray[rear++] = t;
if (rear == dataArray.length){
rear = 0;
}
size++;
return true;
}
@Override
public T remove() {
T value = poll();
if (value != null){
return value;
}else {
throw new NoSuchElementException();
}
}
@Override
public T poll() {
if (size == 0){
return null;
}
T value = (T) dataArray[front++];
if (front == dataArray.length){
front = 0;
}
size--;
return value;
}
@Override
public boolean isEmpty() {
return size == 0;
}
@Override
public T peek() {
if (size == 0){
return null;
}else {
return (T) dataArray[front];
}
}
public void printf() {
for (int i = 0; i < size; i++) {
System.out.print(dataArray[(front + i) % dataArray.length] + " ");
}
}
}