用一個陣列來實作環狀佇列 (circular queue) 。不過,為了區分佇列為滿與佇列為空這兩種狀態,必須犧牲陣列中的一個元素不能存放資料。所以我們的陣列的長度必須是 k + 1
。
我們必須用兩個索引 (index) 來操作這個陣列。這兩個索引分別命名為 front
與 rear
。 front
指向佇列的第一個元素, rear
指向佇列最後一個元素的下一個元素。所以, rear
所指向的那個元素永遠沒有資料。這就是為什麼我們的陣列長度必須是 k + 1
的原因。
另外,實作 Rear()
時,對陣列的操作必須注意。當 rear
指向索引值 0
時,佇列尾端的元素位於陣列的索引值 k
的位置。不能只是單純的用 rear - 1
去操作陣列。否則,會得到一個負的索引值去操作陣列,這樣是會有 runtime error 出現的。
MyCircularQueue
enQueue
deQueue
Front
Rear
isEmpty
isFull
MyCircularQueue
enQueue
deQueue
Front
Rear
isEmpty
isFull