假设您有一个C++程序,必须从给定的.txt文件中读取文本。该程序将:
我想我将每个节点存储在像这样的huffman类中:
struct CharNode {
char value;
int frequency;
bool internal;
int label;
CharNode *parent;
CharNode *left_child;
CharNode *right_child;
};
我不确定在哪里继续。任何帮助将非常感激!
最佳答案
首先使用一个数组,该数组足够长,可以为应用程序应识别的每个字符都有一个元素。现在遍历字符串,以增加与它们的ASCII值相对应的数组元素。 (您可能需要减去初始ASCII值的某个基本数量,因此您开始依靠第一个数组元素为'a')
这部分也可以用C相当容易地完成,因为它使用char和ints作为等效项。
完成后,您将拥有所有字符及其出现的次数。现在,一旦开始构建树节点,就可以遍历数组。然后在那棵树上使用堆算法。
或者只是对数组排序,然后从那里开始构建树。
祝你好运,编码愉快:)
关于c++ - 从最小堆C++创建霍夫曼代码树,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33688097/