假设您有一个必须从给定的.txt文件中读取文本的C ++程序。该计划将:
我想我会将每个节点存储在像这样的霍夫曼类中:
struct CharNode {
char value;
int frequency;
bool internal;
int label;
CharNode *parent;
CharNode *left_child;
CharNode *right_child;
};
我不确定在哪里继续。任何帮助将不胜感激!
答案 0 :(得分:1)
首先使用一个数组,该数组足够长,每个char都有一个元素应该被应用程序识别。现在查看字符串,增加与其ASCII值对应的数组元素。 (您可能需要减去初始ASCII值的某个基本量,因此您开始计算第一个数组元素为'a')
这部分也可以在C中轻松完成,因为它使用字符和整数作为等价物。
完成后,您将拥有所有字符的出现次数。现在,您可以在开始构建树节点后遍历数组。并在该树上使用堆算法。
或者只是对数组进行排序,然后从那里开始构建树。
祝你好运,编码愉快:)。