優先佇列是一種擴展的佇列資料結構,其中每個元素都有一個與之相關的"優先級"。在優先佇列中,元素的刪除順序是基於它們的優先級而不是它們的插入順序。
優先佇列的特性
使用STL實作優先佇列
C++ 的 Standard Template Library (STL) 提供了一個方便的 priority_queue 類別來實現優先佇列。
#include <iostream>
#include <queue>
int main() {
// 創建一個優先佇列
std::priority_queue<int> pq;
// 插入元素
pq.push(10);
pq.push(20);
pq.push(5);
pq.push(1);
// 顯示佇列的頂部元素
std::cout << "Top of the priority queue: " << pq.top() << std::endl;
// 刪除佇列的頂部元素
pq.pop();
std::cout << "After popping, new top of the priority queue: " << pq.top() << std::endl;
return 0;
}
優先佇列的應用
在算法和數據結構中,優先佇列有許多應用,例如:
總結
優先佇列是一種非常強大的資料結構,特別是在需要根據某種優先級(而不是插入順序)來處理元素的場合。它在許多算法中都是不可或缺的,特別是在圖形演算法中。