概念#
佇列(queue)是個具有先進先出(FIFO / First In, First Out)的資料結構。可以在佇列的後方做插入的動作,也可以在前方做刪除的動作。Queue 在現實生活中就像排隊一樣,先到的可以先拿,而後到的就要等前面的都被 pop 以後才會輪到他。
Queue 最基本的幾個操作有這些:
push#
queue 中的 push 函式是用來在 queue 的尾端加入新的元素。

pop#
queue 中的 pop 函式是用來刪除 queue 中排在最前面的值。

front#
queue 中的 front 函式就是用來求出最前面的值,也就是下一個會被 pop 的值。
size / empty#
就像其他的資料結構一樣,queue 也支援查詢目前的大小及是否為空。
用陣列實作#
就像堆疊(stack)一樣,queue 也可以輕易的用 vector 實作出來(一般的陣列也可以)。這裡提供一個用 vector 實作的程式碼:
vector<int> queue;
int left = 0;
// 將 x 推到 queue 的尾端
void push(int x) {
queue.push_back(x);
}
// 查詢 queue 的大小
int size() {
return queue.size() - left;
}
// 將最前端的元素刪除
void pop() {
if (size() > 0){
left++;
}
}
// 查詢最前端的元素
int front() {
if (size() > 0){
return queue[left];
}
return 0;
}
// queue 是否為空
bool empty(){
return (size() == 0);
}
STL 內建 queue 使用方式#
就像 stack 一樣,可以使用 C++ STL 中的 queue 來使用 queue,需要先引入 <queue> 的標頭檔。
// 創造一個 queue
queue<int> my_queue;
// 將 1 推入 queue 的尾端
my_queue.push(1);
// 將 2 推入 queue 的尾端
my_queue.push(2);
// 印出 1
cout << my_queue.front() << "\n";
// 把最前端的 1 刪除
my_queue.pop();
// 印出 2
cout << my_queue.front() << "\n";
// 印出 1
cout << my_queue.size() << "\n";
