佇列是一種特殊的線性表,只允許在表的一端進行插入操作,在另一端 進行刪除操作。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。當佇列中沒有任何元素時稱為空隊。插入操作一般稱為入隊,刪除操作一般稱為出隊。可以模擬現實中買票、打飯時的有秩序排隊的過程。
佇列需要經常執行插入和刪除運算,而每一次插入或刪除,隊頭或隊尾就增加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表。佇列的修改是依先進...