您的位置:首页 > 理论基础 > 数据结构算法

数据结构-队列(循环)-2015

2015-03-04 22:38 253 查看
循环队列,重点是队空 或 队满 的判断。

/**
* 循环队列,重点是队空 或 队满 的判断
*/
public class QueueDemo {
private static int maxSize = 5;
private Object[] array;
private int front;       //队头
private int rear;        //队尾
private int nItems = 0;

public QueueDemo(){
this(maxSize);
}

private QueueDemo(int size){
int front = 0;
int rear = 0;

array = new Object[size];
}

public void insert(Object obj){
if(rear + 1 % maxSize == front){
System.out.println("队列满。");
return;
}

/*if(rear + 1 == maxSize)
rear = 0;*/

array[rear] = obj;
nItems++;

if(this.isFull()){
throw new RuntimeException("队列满==========");
}
rear = (rear + 1) % maxSize;

}

public Object remove(){
if( rear == front){
throw new RuntimeException("队列空==========");
}

Object obj = array[front];

front = (front + 1) % maxSize;

nItems--;
return obj;
}

public Object peek(){
Object obj = array[front];

return obj;
}

public boolean isFull(){
boolean flag = false;
if(nItems >= maxSize)
flag = true;
return flag;
}

public boolean isEmpty(){
boolean flag = false;
if(nItems == 0)
flag = true;

return flag;
}

public int size(){
return nItems;
}

public void display(){
while(nItems > 0){
Object obj = this.remove();
System.out.println("-->" + obj);
}
}
public static void main(String[] args){
QueueDemo queue = new QueueDemo();

/*测试1 队列满
queue.insert("a");
queue.insert("b");
queue.insert("c");
queue.insert("d");
queue.insert("e");
queue.insert("f");
*/

/*测试2 队列空*/
queue.insert("a");
queue.insert("b");
queue.remove();
queue.remove();
queue.remove();

//    	queue.display();
System.out.println(queue);

System.out.println("end========");

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