Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: MC.cover en 4 Junio 2018, 16:02 pm



Título: Cola de prioridad y encontrar una
Publicado por: MC.cover en 4 Junio 2018, 16:02 pm
Hola buenas tengo una duda tengo una cola de prioridad heap donde cada prioridad es unica y tengo que buscar un elemento de la cola donde la prioridad coincida con la buscada

Código
  1. //Busca en cp la prioridad prio y devuelve el nodo asociado a es prioridad
  2. nodo SearchNodeByPriority(unsigned int prio, heap cp){
  3. //cp es un arreglo con punteros a nodos con la prioridad y otros datos
  4.  
  5.    int prio = 1;
  6.    while(cp[prio] -> prioridad < p){
  7.      prio = (cp[prio * 2]->prioridad < cp[prio * 2 + 1]->prioridad) ? (prio * 2) : ((prio * 2) + 1);
  8.    }
  9.  
  10.    if (cp -> arre[prio] == p) {
  11.      return cp[prio];
  12.    }      
  13.    return NULL;
  14. }
  15.  

Se me ocurrio este codigo el problema es que me sirve solamente si el elemento que busco esta en la primera o segunda posicion. Como podria solucionarlo?
Estoy tratando de que esta busquedaq quede en ordel log n siendo n el largo de cp


Título: Re: Cola de prioridad y encontrar una
Publicado por: MAFUS en 4 Junio 2018, 17:37 pm
Tienes dos variables locales con el mismo nombre: el primer argumento de la función y la variable local de ésta.