Implementando Cola de Prioridad

C++C++Beginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderemos sobre la funcionalidad básica de la Cola de Prioridad en el lenguaje de programación C++. La Cola de Prioridad es un contenedor en la STL (Standard Template Library) de C++ que te permite insertar y eliminar elementos según su prioridad. El elemento con la mayor prioridad siempre se coloca al frente de la cola. Cuando se elimina un elemento de la cola, la cola de prioridad se encarga automáticamente de insertar el siguiente elemento de mayor prioridad en su posición correcta.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/StandardLibraryGroup(["Standard Library"]) cpp(("C++")) -.-> cpp/SyntaxandStyleGroup(["Syntax and Style"]) cpp(("C++")) -.-> cpp/ControlFlowGroup(["Control Flow"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp/ControlFlowGroup -.-> cpp/for_loop("For Loop") cpp/ControlFlowGroup -.-> cpp/while_loop("While Loop") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/StandardLibraryGroup -.-> cpp/standard_containers("Standard Containers") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("Code Formatting") subgraph Lab Skills cpp/for_loop -.-> lab-96225{{"Implementando Cola de Prioridad"}} cpp/while_loop -.-> lab-96225{{"Implementando Cola de Prioridad"}} cpp/output -.-> lab-96225{{"Implementando Cola de Prioridad"}} cpp/standard_containers -.-> lab-96225{{"Implementando Cola de Prioridad"}} cpp/code_formatting -.-> lab-96225{{"Implementando Cola de Prioridad"}} end

Incluye las Librerías Requeridas

Creamos un nuevo archivo llamado main.cpp en el directorio ~/project con el siguiente comando:

touch ~/project/main.cpp

Primero, necesitamos incluir las librerías requeridas para que nuestro programa funcione correctamente. En este programa, usaremos las librerías iostream y bits/stdc++.h.

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

Define la función show

La función show se utiliza para mostrar todos los elementos presentes en la cola de prioridad. La función toma un objeto de cola de prioridad como argumento y copia la cola en otra para mantener la cola de prioridad original. Después de eso, imprime todos los elementos presentes en la cola de prioridad iterando sobre ella.

void show(priority_queue<int> q)
{
    priority_queue<int> pq = q;
    while (!pq.empty())
    {
        cout << "\t" << pq.top(); //imprimiendo el elemento más superior
        pq.pop();                 //eliminando el elemento más superior para pasar al siguiente
    }
    cout << endl;
}

Implementa la función principal

La función main es donde ocurre toda la acción. Primero declaramos una variable entera i. Luego creamos una cola de prioridad de enteros llamada q. A continuación, agregamos algunos enteros a la cola de prioridad usando la función push.

Después de eso, mostramos los elementos presentes en la cola de prioridad usando la función show. Luego usamos la función size para mostrar el número de elementos presentes en la cola y usamos la función top para mostrar el elemento con la mayor prioridad.

A continuación, usamos la función pop para eliminar el elemento con la mayor prioridad y mostramos la cola de prioridad actualizada usando la función show.

int main()
{
    priority_queue<int> q;

    for (int i = 1; i < 6; i++)
    {
        q.push(i * 10);
    }

    cout << "La Cola de Prioridad es: ";
    show(q);

    cout << "\n\nEl número de elementos en la Cola de Prioridad es: " << q.size();

    cout << "\n\nEl elemento con la mayor prioridad es: " << q.top();

    q.pop();
    cout << "\n\nDespués de eliminar el elemento más superior, la Cola de Prioridad se convierte en: ";
    show(q);

    return 0;
}

Código final

Puedes usar el siguiente código para implementar una Cola de Prioridad en C++:

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

void show(priority_queue<int> q)
{
    priority_queue<int> pq = q;
    while (!pq.empty())
    {
        cout << "\t" << pq.top();
        pq.pop();
    }
    cout << endl;
}

int main()
{
    priority_queue<int> q;

    for (int i = 1; i < 6; i++)
    {
        q.push(i * 10);
    }

    cout << "La Cola de Prioridad es: ";
    show(q);

    cout << "\n\nEl número de elementos en la Cola de Prioridad es: " << q.size();

    cout << "\n\nEl elemento con la mayor prioridad es: " << q.top();

    q.pop();
    cout << "\n\nDespués de eliminar el elemento más superior, la Cola de Prioridad se convierte en: ";
    show(q);

    return 0;
}

Guarda el código anterior en ~/project/main.cpp. Para compilar y ejecutar este código, utiliza los siguientes comandos:

g++ main.cpp -o main &&./main

Resumen

En este laboratorio, aprendimos sobre los conceptos básicos de la Cola de Prioridad en C++. También vimos cómo declarar e inicializar una cola de prioridad y cómo agregar, eliminar y mostrar elementos de ella. Esperamos que hayas encontrado este tutorial útil.