Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Priority Queue ใน C++ Standard Template Library (STL)

Priority Queue คืออะไร?

Priority queue เป็นชนิดข้อมูลนามธรรมสำหรับเก็บชุดขององค์ประกอบที่มีลำดับความสำคัญ รองรับการแทรกและลบองค์ประกอบตามลำดับความสำคัญ นั่นคือ องค์ประกอบที่มีลำดับความสำคัญสูงสุดสามารถลบได้ทุกเมื่อ Priority queue ไม่ได้เก็บองค์ประกอบในรูปแบบเชิงเส้นตามตำแหน่งเหมือน Stacks, Queues, List ฯลฯ Priority queue ADT เก็บองค์ประกอบตามลำดับความสำคัญของพวกมัน

Priority Queue รองรับฟังก์ชันต่อไปนี้

  • Size() - ใช้คำนวณขนาดของ priority queue โดยคืนจำนวนองค์ประกอบในมัน
  • Empty() - คืนค่า true ถ้า Priority Queue ว่าง และ false ถ้าไม่ว่าง
  • Insert(element) - ใช้แทรกองค์ประกอบใหม่เข้า Priority Queue
  • Min() - คืนค่าองค์ประกอบที่มีคีย์น้อยที่สุด และแสดงข้อความผิดพลาดถ้า Priority Queue ว่าง
  • removeMin() - ลบองค์ประกอบที่อ้างอิงโดยฟังก์ชัน min()

ตารางด้านล่างแสดงผลของการดำเนินการบน priority queue

Priority Queue ใน C++ Standard Template Library (STL)

อัลกอริทึม

เริ่ม
ขั้นตอน 1 → ประกาศฟังก์ชันแสดงองค์ประกอบใน Priority Queue
  void display(priority_queue <int> Pq)
  ประกาศและตั้งค่า priority_queue <int> que = Pq
  วนลูป While (!que.empty())
    เรียก que.top()
    เรียก que.pop()
  จบวน
ขั้นตอน 2 → ใน main()
  สร้างออบเจกต์ priority_queue <int> Pq
  เรียก push() เพื่อแทรกองค์ประกอบใน priority queue เป็น Pq.push(1)
  เรียก display(Pq)
  เรียกเพื่อตรวจสอบขนาด priority queue Pq.size()
  เรียกเพื่อแสดงองค์ประกอบบนสุดของ priority queue Pq.top()
  เรียกเพื่อลบองค์ประกอบของ priority queue Pq.pop()
  เรียก display(Pq)
หยุด

ตัวอย่างโค้ด C++

#include <iostream>
#include <queue>
using namespace std;
void display(priority_queue <int> Pq) {
  priority_queue <int> que = Pq;
  while (!que.empty()) {
    cout << '\t' << que.top();
    que.pop();
  }
  //cout << '\n';
}
int main () {
  priority_queue <int> Pq;
  Pq.push(1);
  Pq.push(3);
  Pq.push(5);
  Pq.push(7);
  Pq.push(9);
  cout << "The priority queue is : ";
  display(Pq);
  cout << "\nPrioriy queue size using size() : " << Pq.size();
  cout << "\nFirst element of priority queue using top(): " << Pq.top();
  cout << "\nremoving element using pop() : ";
  Pq.pop();
  display(Pq);
  return 0;
}

ผลลัพธ์

The priority queue is : 9 7 5 3 1
Prioriy queue size using size() : 5
First element of priority queue using top(): 9
removing element using pop() : 7 5 3 1