堆疊與佇列

佇列 queue


資料先進先出的模式FIFO First in First out或是FCFSFirst come First service,便是佇列。亦即資料由一端增加,由另一端移出,便屬佇列的應用。如果佇列雙向均可以進出資料,此佇列稱為雙佇列Dequeue:Double Ended Queue。

操作本資料結構時,首先規劃一段連續的記憶體空間,再利用兩個指標,指向取出元素的一端稱為前端指標Front pointer,指向元素進入的一端為後端指標Rear pointer。元素加入或是刪除,加入或刪除端的指標便指向下一個未使用的記憶體空間(加入時),或是下一個元素的位址(刪除時)。所以經過一段時間後,佇列便有可能超過原先所規劃的記憶體空間,或是必須大幅搬動佇列內的元素,使運算效律變低,導致佇列無法操作。

為改善此現象,遂有環狀佇列(Circular queue)的應用。乃指佇列空間的第一個位址與最後一個位址相鄰,除所規劃的記憶體空間被用盡外,此一環狀佇列元素的位址,可被循環使用。

是一種和堆疊十分相似的資料結構,在日常生活中隨處可見的排隊人潮,例如:在郵局排隊寄信、銀行排隊存錢或電影院前排隊買票的隊伍,其組成的線性串列就是一種佇列。