#include <iostream>
#include <queue>
#include <vector>
#include <map>
#include <string>
using namespace std;
class Node {
public:
char c; //表示字符
int frequency; //表示该字符出现的次数或频率
Node *left;
Node *right;
Node(char _c, int f, Node *l = NULL, Node *r = NULL)
:c(_c), frequency(f), left(l), right(r) { }
bool operator<(const Node &node) const { //重载<运算法以至于在加入优先队列的时候决定如何处理结点位置
return frequency > node.frequency;
}
};
void initNode(priority_queue<Node> &q, int nodeNum) {
char c;
int frequency;
for (int i = 0; i < nodeNum; i++) {
cout << "输入字符和结点出现的次数: ";
cin >> c >> frequency;
Node node(c, frequency);
q.push(node);
}
}
void showNode(priority_queue<Node> q) {
while (!q.empty()) {
Node node = q.top(); q.pop();
cout << node.c << ", " << node.frequency
c++实现哈夫曼编码完整代码
最新推荐文章于 2024-06-25 18:31:27 发布
本文展示了如何使用C++实现哈夫曼编码。通过创建一个Node类来表示哈夫曼树节点,利用优先队列构建哈夫曼树,并递归地生成哈夫曼编码。代码包括输入字符频率、构建哈夫曼树、打印哈夫曼编码以及验证结果的全过程。
摘要由CSDN通过智能技术生成