logo

Cola de prioridad en C++

La cola de prioridad en C++ es un contenedor derivado en STL que considera solo el elemento de mayor prioridad. La cola sigue la política FIFO, mientras que la cola de prioridad muestra los elementos según la prioridad, es decir, el elemento de mayor prioridad aparece primero.

Es similar a la cola ordinaria en ciertos aspectos pero se diferencia en los siguientes aspectos:

  • En una cola de prioridad, cada elemento de la cola está asociado con alguna prioridad, pero la prioridad no existe en una estructura de datos de la cola.
  • El elemento con mayor prioridad en una cola de prioridad se eliminará primero mientras que la cola sigue a la FIFO (primero en entrar, primero en salir) política significa que el elemento que se inserta primero se eliminará primero.
  • Si existe más de un elemento con la misma prioridad, se tendrá en cuenta el orden del elemento en una cola.

Nota: La cola de prioridad es la versión extendida de una cola normal, excepto que el elemento con la prioridad más alta se eliminará primero de la cola de prioridad.

Sintaxis de la cola de prioridad

 priority_queue variable_name; 

Entendamos la cola de prioridad con un ejemplo sencillo.

Cola de prioridad en C++

En la ilustración anterior, hemos insertado los elementos usando una función push() y la operación de inserción es idéntica a la cola normal. Pero cuando eliminamos el elemento de la cola usando una función pop(), el elemento con mayor prioridad se eliminará primero.

Función miembro de la cola prioritaria

Función Descripción
empujar() Inserta un nuevo elemento en una cola de prioridad.
estallido() Elimina el elemento superior de la cola, que tiene la mayor prioridad.
arriba() Esta función se utiliza para abordar el elemento superior de una cola de prioridad.
tamaño() Determina el tamaño de una cola de prioridad.
vacío() Verifica si la cola está vacía o no. Según la verificación, devuelve el estado.
intercambio() Intercambia los elementos de una cola prioritaria con otra cola que tenga el mismo tipo y tamaño.
ubicación() Inserta un nuevo elemento en la parte superior de la cola de prioridad.

Creemos un programa simple de cola de prioridad.

 #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>

Veamos otro ejemplo de cola de prioridad.

 #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; } 

En el código anterior, hemos declarado dos colas de prioridad, es decir, p y q. Insertamos cuatro elementos en la cola de prioridad 'p' y cuatro en la cola de prioridad 'q'. Después de insertar los elementos, intercambiamos los elementos de la cola 'p' con la cola 'q' usando una función swap().

Producción

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