package queue;
import java.util.NoSuchElementException;
/**
* Blog : http://blog.csdn.net/javazejian [原文地址,請尊重原創]
* @author 羊頭怪
*
* @param <T>
*/
public class MyQueueImple<T> implements MyQueue<T> {
//底層使用數字存取數據
private T array[];
//有效數據大小
private int elements;
//隊頭
private int front;
//隊尾
private int end;
/**
* 初始化
*/
public MyQueueImple() {
array = (T[]) new Object[10];
elements=0;
front=0;
end=-1;
}
/**
* 初始化
* @param size
*/
public MyQueueImple(int size){
array = (T[]) new Object[size];
elements=size;
front=0;
end=-1;
}
/**
* 返回隊列長度
*/
@Override
public int length() {
// TODO Auto-generated method stub
return elements;
}
/**
* 判斷隊列是否爲空
*/
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return end==-1;
}
/**
* 判斷隊列是否滿了
* @return
*/
public boolean isfull() {
return end==array.length-1;
}
/**
* 入隊操作。成功返回true,失敗返回false
*/
@Override
public boolean add(T data) {
// TODO Auto-generated method stub
if(!isfull()) {
array[++end]=data;
elements++;
return true;
}
return false;
}
/**
* 插入元素,與add方法不同 該方法只能拋出未經檢查的異常使添加元素失敗 而不是不出現異常
* 例如在容量固定(有界)的隊列中 NullPointerException:data==null時拋出
*/
@Override
public boolean offer(T data) {
if(isfull()) {
throw new ArrayIndexOutOfBoundsException();
}
array[++end]=data;
elements++;
return true;
}
/**
* 返回隊頭元素,不進行刪除操作,若隊列元素爲空,返回null
*/
@Override
public T peek() {
if(isEmpty()) {
return null;
}
return array[front];
}
/**
* 返回隊頭元素,不執行刪除操作,若隊列爲空,拋出異常 NoSuchElementException
*/
@Override
public T element() {
if(!isEmpty()) {
throw new NoSuchElementException();
}
return array[front];
}
/**
* 出隊,進行刪除操作,返回隊頭元素,若隊列爲空,返回null
*/
@Override
public T poll() {
if(isEmpty()) {
return null;
}
T value = array[front++];
elements--;
return value;
}
/**
* 出隊,執行刪除操作,返回隊頭元素,若隊列爲空,返回NoSuchElementException
*/
@Override
public T remove() {
if(!isEmpty()) {
throw new NoSuchElementException();
}
elements--;
return array[front++];
}
/**
* 清空隊列
*/
@Override
public void clearQueue() {
// TODO Auto-generated method stub
}
public void toMyQueue() {
System.out.print("[ ");
for(int i=0;i<elements;i++) {
System.out.print(array[i]+" ");
}
System.out.print("]");
}
}
java數據結構之隊列
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.