您的位置:首页 > 其它

使用数组实现队列

2015-01-07 11:30 357 查看
package cn.my.queue;

/**

* 自定义队列: 队列先进先出(FIFO) 队列中的数据项不总是从数组的0下标开始,移除数据项后,

* 队头指针会指向一个较高的下标位置

* 循环队列(“缓冲环”)

* @author wangbowen @date 2015年1月7日

* @version 1.0

*/

public class QueueX {

/**

* 队列大小

*/

private int maxSize;

/**

* 队列数组

*/

private Long [] queueArray;

/**

* 队头数据项

*/

private int fornt;

/**

* 队尾数据项

*/

private int rear;

/**

* 数据项

*/

private int nItems;

/**

* 带参数的构造方法

* @param n

*/

public QueueX(int n) {

this.maxSize = n;

this.queueArray = new Long[maxSize];

this.fornt = 0;

this.rear = -1;

this.nItems = 0;

}

/**

* 插入数据

* @param j

* void

*/

public void insert(long j){

if(!isFull()){

if(rear ==maxSize-1)

rear = -1;

queueArray[++rear] = j;

nItems++;

}else{

System.out.println("队列已满.....");

}

}

/**

* 删除数据项

* @return

* Long

*/

public Long remove(){

if(!isEmpty()){

Long temp = queueArray[fornt++];

if(fornt==maxSize)

fornt = 0;

nItems --;

return temp;

}else{

System.out.println("队列为空不能删除。。。。");

}

return null;

}

/**

* 获取队头数据

* @return

* Long

*/

public Long peekFornt(){

return queueArray[fornt];

}

/**

* 队列是否为空

* @return

* boolean

*/

public boolean isEmpty(){

return (nItems==0);

}

/**

* 队列是否已满

* @return

* boolean

*/

public boolean isFull(){

return (nItems==maxSize);

}

/**

* 队列大小

* @return

* int

*/

public int queueSize(){

return nItems;

}

/**

* 获取队列大小

* @return maxSize 队列大小

*/

public int getMaxSize() {

return maxSize;

}

/**

* 设置队列大小

* @param maxSize 队列大小

*/

public void setMaxSize(int maxSize) {

this.maxSize = maxSize;

}

/**

* 获取队列数组

* @return queueArray 队列数组

*/

public Long[] getQueueArray() {

return queueArray;

}

/**

* 设置队列数组

* @param queueArray 队列数组

*/

public void setQueueArray(Long[] queueArray) {

this.queueArray = queueArray;

}

/**

* 获取队头数据项

* @return fornt 队头数据项

*/

public int getFornt() {

return fornt;

}

/**

* 设置队头数据项

* @param fornt 队头数据项

*/

public void setFornt(int fornt) {

this.fornt = fornt;

}

/**

* 获取队尾数据项

* @return rear 队尾数据项

*/

public int getRear() {

return rear;

}

/**

* 设置队尾数据项

* @param rear 队尾数据项

*/

public void setRear(int rear) {

this.rear = rear;

}

/**

* 获取数据项

* @return nItems 数据项

*/

public int getnItems() {

return nItems;

}

/**

* 设置数据项

* @param nItems 数据项

*/

public void setnItems(int nItems) {

this.nItems = nItems;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: