struct priorityQueryNode //表示装入优先队列的节点
{
InterNode * PtrInter; //指向内部节点的指针
double distance; //该内部节点到查询点之间的距离(聚类中心到查询点之间距离-聚类半径)
};
struct cmp{ //优先队列进行比较
bool operator() ( priorityQueryNode a, priorityQueryNode b ){
return a.distance> b.distance; //小顶堆
}
};
priority_queue<priorityQueryNode, vector<priorityQueryNode>, cmp> q;
priorityQueryNode pQNode, pQNode2;
pQNode.distance = 0;
pQNode.PtrInter = proot;
q.push(pQNode); //将根节点入队列
// NODEQUEUE q; //typedef queue<InterNode *> NODEQUEUE; 装内部节点的队列
// q.push(proot); //将根节点入队列
while(!q.empty())
{
pQNode = q.top(); //取队列中优先级最高的元素
q.pop(); //从队列中删除元素
pnode = pQNode.PtrInter;