4.1 为queue.java 程序(清单4.4)的Queue类中写一个方法,显示队列的 内容。注意这并不是要简单的显示出数组的内容。它要求按数据项插入的队 列的顺序,从第一个插入的数据项到最后一个插入的数据项显示出来。不要 输出因为在数组末端回绕而折成两半的样子。注意无论front和rear在什么位置上,都要正确显示出一个数据项和没有数据项的情况。
public class Queue {
private int maxSize;
private long[] queArray;
private int front;
private int rear;
private int nItems;
public Queue(int s){
maxSize=s;
queArray = new long[maxSize];
front=0;
rear=-1;
nItems=0;
}
public void insert(long j){
if(rear==maxSize-1)
rear=-1;
queArray[++rear]=j;
nItems++;
}
public long remove(){
long temp = queArray[front++];
if(front==maxSize)
front=0;
nItems--;
return temp;
}
public long peekFront(){
return queArray[front];
}
public boolean isEmpty(){
return (nItems==0);
}
public boolean isFull(){
return (nItems==maxSize);
}
public int size(){
return nItems;
}
//====================================================
//编程作业4.1
public void display(){
System.out.print("队列为: ");
if(nItems==0){
System.out.println("空。 ");
return;
}
if(rear>=front){
for(int i =front;i<=rear;i++){
System.out.print(queArray[i]+" ");
}
}
else{
for(int i =front;i<maxSize;i++){
System.out.print(queArray[i]+" ");
}
for(int i =0;i<=rear;i++){
System.out.print(queArray[i]+" ");
}
}
System.out.println();
}
}
public class QueueApp {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Queue theQueue = new Queue(5);
theQueue.insert(10);
theQueue.insert(20);
theQueue.insert(30);
theQueue.insert(40);
theQueue.remove();
theQueue.remove();
theQueue.remove();
theQueue.insert(50);
theQueue.insert(60);
theQueue.insert(70);
theQueue.insert(80);
theQueue.display();
while(!theQueue.isEmpty()){
long n = theQueue.remove();
System.out.print(n);
System.out.print(" ");
}
System.out.println("");
}
}