Java資料結構之佇列的實現

2021-08-27 05:34:55 字數 1014 閱讀 5838

佇列是一種特殊的線性表,只允許在表的一端進行插入操作,在另一端 進行刪除操作。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。當佇列中沒有任何元素時稱為空隊。插入操作一般稱為入隊,刪除操作一般稱為出隊。可以模擬現實中買票、打飯時的有秩序排隊的過程。

佇列需要經常執行插入和刪除運算,而每一次插入或刪除,隊頭或隊尾就增加1,使得佇列中的元素被刪除後,其空間就用不到了。當隊尾等於陣列的大小時,再做插入運算就會產生溢位,而實際上佇列的前端還有許多可用的位置,這種現象我們成為假溢位。解決假溢位的方法是將儲存元素陣列看成是乙個環,即陣列的最後乙個元素的下乙個元素是陣列第乙個元素。

當隊列為空時滿足front=rear,為了區分空佇列和滿佇列,我們犧牲掉乙個位置,即定義front=(rear+1)%capacity的時候佇列已滿。

public class queue

//為了區分空佇列和滿佇列,我們犧牲掉了乙個位置,但應該與使用者想要的容量保持一致,所以加1。

capacity=size+1;

elem=new object[size+1];

front=0;

rear=0;

} //判斷是否為空隊

public boolean isempty()

//判斷隊是否已滿

public boolean isfull()

//隊中元素個數

public int length()

else if(front-rear<0)

else return 0;

} //入隊

public boolean push(t t)

else

} //出隊

public boolean pop()

else

} //取隊頭元素

@suppresswarnings("unchecked")

public t front()

else return (t) elem[front];

}}

資料結構之佇列及Java實現

佇列也是一種特殊的線性表,特點是先進先出,只能在表的一端進行插入,在另一端進行刪除。向佇列中插入元素的過程稱為入隊 enqueue 刪除元素的過程稱為出隊 dequeue 並把允許入隊的一端稱為隊尾,允許出的的一端稱為隊頭,沒有任何元素的佇列則稱為空隊。其一般結構如下所示 與棧的實現相似,佇列也有兩...

資料結構之迴圈佇列(Java實現)

理論參考其他文章!我們假設乙個佇列有n個元素,則順序儲存的佇列需建立乙個大於n的陣列,並把佇列的所有元素儲存在陣列的前n個單元,陣列下標為0的一端即是隊頭。所謂的入佇列操作,其實就是在隊尾追加乙個元素,不需要移動任何元素,因此時間複雜度為0 1 與棧不同的是,佇列元素的出列是在隊頭,即下標為0的位置...

java資料結構之線性佇列的實現

佇列 queue 是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表。1 允許刪除的一端稱為隊頭 front 2 允許插入的一端稱為隊尾 rear 3 當佇列中沒有元素時稱為空佇列。4 佇列亦稱作先進先出 first in first out 的線性表,簡稱為fifo表。佇列的修改是依先進...