| class hNode { public: friend bool operator > (hNode n1,hNode n2); //定义了大于符号,供优先队列排列使用 hNode(string d="",int i=0,hNode* l = NULL,hNode* r =NULL):left(l),right(r),data(d),value(i){} hNode* left; hNode* right; string data; //储存的字符串 int value; //字符串出现的次数 }; bool operator >(hNode n1,hNode n2) { return n1.value > n2.value; } |
| while(...) { std::priority_queue<hNode> q; ..... hNode h1 = q.top(); q.pop(); hNode h2 = q.top(); q.pop(); hNode r; r.left = h1; r.right = h2; r.value = h1.value + h2.value; q.push(r); } |
| hNode* makeTree(priority_queue<hNode*> pq) { hNode* p1 = NULL; hNode* p2 = NULL; hNode* r = NULL; while( !pq.empty()) { p1 = pq.top(); pq.pop(); if (pq.empty()) { r = p1; return r; } p2 = pq.top(); pq.pop(); r =new hNode; r->left = p1; r->right = p2; r->value = p1->value +p2->value; pq.push(r); } return NULL; } |
| struct phNodeComp { bool operator () (const hNode*& left,const hNode*& right) const { return left->value > right->value; } }; |
| priority_queue<hNode*,vector<hNode*>,phNodeComp > pq; |
| C++中的内联函数(inline) |
| 用C++访问SQL Server 2000的实例 |
| C++编写的猜字游戏 |
| C++数据结构学习:递归(3.1) |
| 如何用C++编写出高质量的程序 |
| Visual C++开发工具与调试技巧集合 |
| C++数据结构学习:二叉树(2) |
| C++中的布尔类型 |
| C++数据结构学习:二叉树(1) |
| 轻轻松松C to C++ |