Advertisement
cardel

Ejemplo cola de prioridad

May 13th, 2016
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.53 KB | None | 0 0
  1. /*
  2.  * Carlos Andres Delgado
  3.  * Ejemplo de cola de prioridad
  4.  * 13 Mayo 2016
  5.  */
  6. #include <queue>  
  7. #include <vector>
  8. #include <iostream>
  9.  
  10. using namespace std;
  11. //Se define un nodo de un árbol
  12. class Nodo{
  13.         public:
  14.             int profundidad;
  15.             int coordenadaX;
  16.             int coordenadaY;
  17.             int prioridad;
  18.             const char * nombre;
  19.            
  20.         Nodo(const char * nombreIn, int profundidadIn, int coordenadaXIn, int coordenadaYIn, int prioridadIn){
  21.                 profundidad = profundidadIn;
  22.                 coordenadaX = coordenadaXIn;
  23.                 coordenadaY = coordenadaYIn;
  24.                 prioridad = prioridadIn;   
  25.                 nombre = nombreIn; 
  26.         }
  27. };
  28.  
  29. //Función de comparación
  30. //El operador le da mejor prioridad a los menores, si lo desea al reves cambie el operador por <=
  31. struct CompararPrioridad{
  32.  
  33.     bool operator()(const Nodo &a, const Nodo &b) const{
  34.    
  35.         return a.prioridad>=b.prioridad;
  36.     }
  37.  
  38. };
  39.  
  40. int main(){
  41.    
  42.     /*Creamos la cola de prioridad
  43.     *
  44.     * Primer argumento el nodo (lo que queremos enviar)
  45.     * Luego la prioridad (entero)
  46.     * Luego el operador para ordenar
  47.      */
  48.     priority_queue<Nodo, vector<Nodo>, CompararPrioridad> colaDePrioridad;
  49.    
  50.     //Prioridad baja 10
  51.     Nodo a = Nodo("nodo 1",0,0,0,10);
  52.    
  53.     //Prioridad alta 1
  54.     Nodo b = Nodo("nodo 2",2,1,3,1);
  55.    
  56.     //Prioridad media 3
  57.     Nodo c = Nodo("nodo 3",3,1,5,3);
  58.    
  59.  
  60.    
  61.     colaDePrioridad.push(a);
  62.     colaDePrioridad.push(b);
  63.     colaDePrioridad.push(c);
  64.    
  65.     while(!colaDePrioridad.empty())
  66.     {
  67.         cout << "Nombre nodo por posición: "<<colaDePrioridad.top().nombre << endl;
  68.         colaDePrioridad.pop();
  69.     }
  70.    
  71.     return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement