📄 arrayqueue.java~11~
字号:
package queue;
/**
用顺序存储实现队列
*/
public class ArrayQueue implements Queue {
//data members
protected int front;//队头
protected int rear;//队尾
protected Object[]queue;
// 构造函数
public ArrayQueue() {
this(10);
}
public ArrayQueue(int initialCapacity){
if (initialCapacity < 1)
throw new IllegalArgumentException //如果initialCapacity<1抛出异常
("initialCapacity must be >= 1");
queue = new Object [initialCapacity+1];
front=rear=0;
}
/**实现Queue接口的方法*/
//判断队列是否为空
public boolean isEmpty() {
return front==rear;
}
//获得队头元素
public Object getFrontElement() {
return queue[front];
}
//获得队尾元素
public Object getRearElement() {
return queue[rear-1];
}
//添加元素入队列
public void put(Object theElement) {
if(rear==queue.length-1) {
queue=changeQueueLength(queue,2*queue.length);
}
queue[rear]=theElement;
rear++;
}
//内部方法,用新长度newLength进行表空间的扩容
Object [] changeQueueLength(Object []element,int newLength){
Object[] newArray=new Object[newLength];
for(int i=0;i<queue.length-1;i++){
newArray[i]=queue[i];
}
front=0;rear=queue.length-1;
return newArray;
}
//删除队头元素
public Object remove() {
if(isEmpty()) {
throw new IllegalArgumentException("the queue is empty");
}
Object element=queue[front];
for(int i=0;i<queue.length-1;i++) {
queue[i]=queue[i+1];
}
front=0;rear--;
return element;
}
public int length(){
return rear-front;
}
/** 到字符串的转换 */
public String toString()
{
StringBuffer s = new StringBuffer("[");
// 添加元素到字符缓冲区
for (int i = 0; i < queue.length-1; i++)
if (queue[i] != null)
s.append(queue[i].toString() + ", ");
if (queue.length-1 > 0)
s.delete(s.length() - 2, s.length()); // 去掉最后一个 ","
s.append("]");
// 返回创建的字符串 s
return new String(s);
}
//测试方法
public static void main(String args[]) {
// 测试缺省的构造函数
ArrayQueue q=new ArrayQueue(2);
// 测试判空操作isEmpty()
if (q.isEmpty())
System.out.println("The queue is empty");
else System.out.println("The queue is not empty");
//构造一个队列
q.put(new Integer(1));
q.put(new Integer(3));
q.put(new Integer(6));
q.put(new Integer(2));
q.put(new Integer(7));
System.out.println(q.toString());
//测试获得队头元素getFrontElement()
Integer a=(Integer)q.getFrontElement();
System.out.println("the front of queue is " +a);
//测试获得队尾元素getRearElement()
a=(Integer)q.getRearElement();
System.out.println("the rear of queue is " +a);
//测试添加元素put()
System.out.println("the added element of queue is " +new Integer(8));
q.put(new Integer(8));
System.out.println("the new queue is"+q.toString());
//删除队尾元素remove()
a=(Integer)q.remove();
System.out.println("the remove element of queue is "+a);
System.out.println("the new queue is"+q.toString());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -