logo

Coada prioritară în C++

Coada de prioritate în C++ este un container derivat în STL care ia în considerare doar elementul cu cea mai mare prioritate. Coada urmează politica FIFO, în timp ce coada cu prioritate afișează elementele pe baza priorității, adică, elementul cu cea mai mare prioritate este scos primul.

Este similar cu coada obișnuită în anumite aspecte, dar diferă în următoarele moduri:

  • Într-o coadă de prioritate, fiecare element din coadă este asociat cu o anumită prioritate, dar prioritatea nu există într-o structură de date de coadă.
  • Elementul cu cea mai mare prioritate dintr-o coadă de prioritate va fi eliminat mai întâi în timp ce coada urmează FIFO (primul întrat, primul ieşit) politica înseamnă că elementul care este inserat primul va fi șters primul.
  • Dacă există mai mult de un element cu aceeași prioritate, atunci va fi luată în considerare ordinea elementului într-o coadă.

Notă: Coada de prioritate este versiunea extinsă a unei cozi de așteptare normale, cu excepția faptului că elementul cu cea mai mare prioritate va fi eliminat primul din coada de prioritate.

Sintaxa Cozii de prioritate

 priority_queue variable_name; 

Să înțelegem coada de priorități printr-un exemplu simplu.

Coada prioritară în C++

În ilustrația de mai sus, am inserat elementele folosind o funcție push(), iar operația de inserare este identică cu coada normală. Dar când ștergem elementul din coadă folosind o funcție pop(), atunci elementul cu cea mai mare prioritate va fi șters mai întâi.

tastele modificatoare

Funcția de membru al cozii de prioritate

Funcţie Descriere
Apăsaţi() Inserează un nou element într-o coadă de prioritate.
pop() Îndepărtează elementul superior din coadă, care are cea mai mare prioritate.
top() Această funcție este utilizată pentru a aborda elementul cel mai de sus al unei cozi prioritare.
mărimea() Acesta determină dimensiunea unei cozi prioritare.
gol() Acesta verifică dacă coada este goală sau nu. Pe baza verificării, returnează starea.
swap() Schimbă elementele unei cozi cu prioritate cu o altă coadă având același tip și dimensiune.
Locație() Inserează un nou element în partea de sus a cozii de prioritate.

Să creăm un program simplu de coadă de prioritate.

 #include #include using namespace std; int main() { priority_queue p; // variable declaration. p.push(10); // inserting 10 in a queue, top=10 p.push(30); // inserting 30 in a queue, top=30 p.push(20); // inserting 20 in a queue, top=20 cout&lt;<'number of elements available in 'p' :'<<p>In the above code, we have created a priority queue in which we insert three elements, i.e., 10, 30, 20. After inserting the elements, we display all the elements of a priority queue by using a while loop.<p></p> <p> <strong>Output</strong> </p> <pre> Number of elements available in &apos;p&apos; :3 30 20 10 zzzzz/ </pre> <p> <strong>Let&apos;s see another example of a priority queue.</strong> </p> <pre> #include #include using namespace std; int main() { priority_queue p; // priority queue declaration priority_queue q; // priority queue declaration p.push(1); // inserting element &apos;1&apos; in p. p.push(2); // inserting element &apos;2&apos; in p. p.push(3); // inserting element &apos;3&apos; in p. p.push(4); // inserting element &apos;4&apos; in p. q.push(5); // inserting element &apos;5&apos; in q. q.push(6); // inserting element &apos;6&apos; in q. q.push(7); // inserting element &apos;7&apos; in q. q.push(8); // inserting element &apos;8&apos; in q. p.swap(q); std::cout &lt;&lt; &apos;Elements of p are : &apos; &lt;&lt; std::endl; while(!p.empty()) { std::cout &lt;&lt; p.top() &lt;&lt; std::endl; p.pop(); } std::cout &lt;&lt; &apos;Elements of q are :&apos; &lt;&lt; std::endl; while(!q.empty()) { std::cout &lt;&lt; q.top() &lt;&lt; std::endl; q.pop(); } return 0; } </pre> <p>In the above code, we have declared two priority queues, i.e., p and q. We inserted four elements in &apos;p&apos; priority queue and four in &apos;q&apos; priority queue. After inserting the elements, we swap the elements of &apos;p&apos; queue with &apos;q&apos; queue by using a swap() function.</p> <p> <strong>Output</strong> </p> <pre> Elements of p are : 8 7 6 5 Elements of q are : 4 3 2 1 </pre> <hr></'number>

Să vedem un alt exemplu de coadă cu prioritate.

 #include #include using namespace std; int main() { priority_queue p; // priority queue declaration priority_queue q; // priority queue declaration p.push(1); // inserting element &apos;1&apos; in p. p.push(2); // inserting element &apos;2&apos; in p. p.push(3); // inserting element &apos;3&apos; in p. p.push(4); // inserting element &apos;4&apos; in p. q.push(5); // inserting element &apos;5&apos; in q. q.push(6); // inserting element &apos;6&apos; in q. q.push(7); // inserting element &apos;7&apos; in q. q.push(8); // inserting element &apos;8&apos; in q. p.swap(q); std::cout &lt;&lt; &apos;Elements of p are : &apos; &lt;&lt; std::endl; while(!p.empty()) { std::cout &lt;&lt; p.top() &lt;&lt; std::endl; p.pop(); } std::cout &lt;&lt; &apos;Elements of q are :&apos; &lt;&lt; std::endl; while(!q.empty()) { std::cout &lt;&lt; q.top() &lt;&lt; std::endl; q.pop(); } return 0; } 

În codul de mai sus, am declarat două cozi de prioritate, adică p și q. Am inserat patru elemente în coada de prioritate „p” și patru în coada de prioritate „q”. După inserarea elementelor, schimbăm elementele din coada „p” cu coada „q” folosind o funcție swap().

Ieșire

 Elements of p are : 8 7 6 5 Elements of q are : 4 3 2 1