程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java基礎-如何編寫一個JAVA的隊列類

Java基礎-如何編寫一個JAVA的隊列類

編輯:關於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下編譯通過。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved