陣列與線性結構

佇列

佇列就是商店裡排的隊:人們從隊尾加入,從隊首被服務,按到達的先後順序進行。最先進去的最先出來——這是 FIFO,先進先出,與堆疊正好相反。兩個核心動作是 enqueue(加到隊尾)和 dequeue(從隊首移除);front 讓你看一眼下一個是誰。

實作得當時,兩端都是 O(1)。在普通陣列上的樸素做法會在出隊時把所有元素整體前移(O(n));常見的修正是用環形緩衝區,讓隊首和隊尾索引在陣列裡循環繞回,於是哪一端都不必搬移。雙向鏈結串列同樣能在兩端做到 O(1)。在 C++ 裡你會用 std::queue,它底層包著一個 deque。

佇列刻畫的是公平與順序。它驅動任務與列印排程、訊息管線,以及在快生產者與慢消費者之間的緩衝;而最關鍵的是廣度優先搜尋,它用一個佇列逐層走訪圖。

#include <queue>
std::queue<int> q;
q.push(1); q.push(2); q.push(3);
//  front [ 1 | 2 | 3 ] back
int f = q.front();  // 1   (peek, O(1))
q.pop();            // removes 1 from the front, O(1)
// now front() == 2

FIFO 順序;入佇與出佇都是 O(1)。

堆疊是 LIFO、佇列是 FIFO——記住這一對,就掌握了一半「何時用誰」的判斷。

又稱
FIFOFIFO queue队列佇列先進先出