Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Carlos Andres Delgado
- * Ejemplo de cola de prioridad
- * 13 Mayo 2016
- */
- #include <queue>
- #include <vector>
- #include <iostream>
- using namespace std;
- //Se define un nodo de un árbol
- class Nodo{
- public:
- int profundidad;
- int coordenadaX;
- int coordenadaY;
- int prioridad;
- const char * nombre;
- Nodo(const char * nombreIn, int profundidadIn, int coordenadaXIn, int coordenadaYIn, int prioridadIn){
- profundidad = profundidadIn;
- coordenadaX = coordenadaXIn;
- coordenadaY = coordenadaYIn;
- prioridad = prioridadIn;
- nombre = nombreIn;
- }
- };
- //Función de comparación
- //El operador le da mejor prioridad a los menores, si lo desea al reves cambie el operador por <=
- struct CompararPrioridad{
- bool operator()(const Nodo &a, const Nodo &b) const{
- return a.prioridad>=b.prioridad;
- }
- };
- int main(){
- /*Creamos la cola de prioridad
- *
- * Primer argumento el nodo (lo que queremos enviar)
- * Luego la prioridad (entero)
- * Luego el operador para ordenar
- */
- priority_queue<Nodo, vector<Nodo>, CompararPrioridad> colaDePrioridad;
- //Prioridad baja 10
- Nodo a = Nodo("nodo 1",0,0,0,10);
- //Prioridad alta 1
- Nodo b = Nodo("nodo 2",2,1,3,1);
- //Prioridad media 3
- Nodo c = Nodo("nodo 3",3,1,5,3);
- colaDePrioridad.push(a);
- colaDePrioridad.push(b);
- colaDePrioridad.push(c);
- while(!colaDePrioridad.empty())
- {
- cout << "Nombre nodo por posición: "<<colaDePrioridad.top().nombre << endl;
- colaDePrioridad.pop();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement