编写一个JAVA的队列类

2007-01-01     推荐:590091388    收藏:381823514    评论:0     来源:JAVA用户

队列是设计程序中常用的一种数据结构。它类似日常生活中的排队现象,采用一种被称为“先进先出”(LIFO)的存储结构。数据元素只能从队尾进入,从队首取出。在队列中,数据元素可以任意增减,但数据元素的次序不会改变。每当有数据元素从队列中被取出,后面的数据元素依次向前移动一位。所以,任何时候从队列中读到的都是队首的数据。



根据这些特点,对队列定义了以下六种操作:

enq(x) 向队列插入一个值为x的元素;

deq() 从队列删除一个元素;

front() 从队列中读一个元素,但队列保持不变;

empty() 判断队列是否为空,空则返回真;

clear() 清空队列;

search(x) 查找距队首最近的元素的位置,若不存在,返回-1。

 

Vector类是JAVA中专门负责处理对象元素有序存储和任意增删的类,因此,用Vector可以快速实现JAVA的队列类。

public class Queue extends java.util.Vector {

public Queue() {

super();

}

public synchronized void enq(Object x) {

super.addElement(x);

}

public synchronized Object deq() {

/* 队列若为空,引发EmptyQueueException异常 */

if( this.empty() )

throw new EmptyQueueException();

Object x = super.elementAt(0);

super.removeElementAt(0);

return x;

}

public synchronized Object front() {

if( this.empty() )

throw new EmptyQueueException();

return super.elementAt(0);

}

public boolean empty() {

return super.isEmpty();

}

public synchronized void clear() {

super.removeAllElements();

}

public int search(Object x) {

return super.indexOf(x);

}

}

public class EmptyQueueException extends java.lang.RuntimeException {

public EmptyQueueException() {

super();

}

}

以上程序在JDK1.1.5下编译通过



您可以针对本文进行:[评论]  [收藏]  [推荐]   [查看原文链接]  
  • 共有0条评论  点击查看更多评论
  • 网友评论仅供网友表达个人看法,并不表明e800同意其观点或证实其描述
我想发表评论:
用户名密码
  • 匿名发表
    验证码: