您的位置:首页 > 编程语言 > Java开发

Java用数组实现顺序队列

2016-06-13 20:07 375 查看
public class Queue {

private static final int MAX_SIZE = 100;
private Object[] queue;
private int length;     //队列初始化长度
private int front;      //Head pointers
private int rear;       //The tail pointer

//Initialize the queue
private void init(){
queue = new Object[this.length + 1];
front = rear = 0;
}

//Team
public void put(Object object)throws Exception{
if (isFull()) {
throw new Exception("team faild,queue is empty!");
}
queue[rear] = object;
rear = (rear + 1) % queue.length;
}

//Out team
public Object get() throws Exception{
if (isEmpey()) {
throw new Exception("Out team faild,queue is empty");
}
Object object = queue[front];
queue[front] = null;    //Releasiong objects.
front = (front + 1) % queue.length;
return object;
}

//Clear team
public void clear(){
queue = null;
queue = new Object[this.length];
}

//get the current queue size
public int size(){
return (rear - front + queue.length) % queue.length;
}

//Determines whether the queue is empty
private boolean isEmpey() {
// TODO Auto-generated method stub
return front == rear;
}

/**
* Determines wheter the queue is full
* @return
*/
private boolean isFull() {
// TODO Auto-generated method stub

return (rear + 1) % queue.length == front;
}

public Queue(int length){
this.length = length;
init();
}

public Queue(){
this.length = MAX_SIZE;
init();
}
public static void main(String []args){
System.out.println("ceshi");
Queue queue = new Queue(5);
char[] data = new char[]{'凔','海','一','声','笑'};
try {
for (int i = 0; i < data.length; i++) {
System.err.println("Team data:" + data[i]);
queue.put(data[i]);
}
System.out.println("Team size:" + queue.size());
System.out.println("-------------------------");
while (!queue.isEmpey()) {
System.out.println("Out data:" + queue.get());
}
System.err.println("Team of know? \t" + queue.isEmpey());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java class