改進此頁

Priority Queue - 優先隊列

應用程序常常需要處理帶有優先級的業務,優先級最高的業務首先得到服務。因此優先隊列這種資料結構應運而生。優先隊列中的每個元素都有各自的優先級,優先級最高的元素最先得到服務;優先級相同的元素按照其在優先隊列中的順序得到服務,例如作業系統(operating system)中的任務調度。

優先隊列與其說是資料結構,不如說是一種抽象資料型別(Abstract Data Type,ADT),其介面(interface)至少需要三個基本的方法(method):

  • 插入一筆優先級別資料 (insert_with_priority)
  • 取出最優先資料 (pull_highest_priority_element)
  • 查看最優先資料 (peak) 若使用C++的STL提供的介面則如下所示
template <typename T> class priority_queue{
    void push (const T& val);
    void pop ();
    const T& top() const;
};

優先隊列可以使用數組或鏈表實現,從時間和空間複雜度來說,往往用堆(heap)來實現。

Reference