霍夫曼算法需要帮助存储字符代码

时间:2009-12-15 19:25:50

标签: c network-programming

我已编写程序来获取每个char的代码,如程序输出中所示。

输入一些文字:nslfaslfjasfj text =“nslfaslfjasfj”

a:2

F:3

Y:2

1:2

N:1

S:3

霍夫曼算法 下面是“CHAR CODE”:

n代码:111

j code:110

f代码:10

代码:01

l code:001

代码:000

我的下一步应该是将上述内容存储在结构中并将其与原始文本=“nslfaslfjasfj”进行比较,以编码为“11101 ..... so on”。

我发现在结构中存储“CHAR CODE”时出现问题。它应该存储为字符串,如字符串s =“111”,然后存储在结构中吗?..提前感谢。

3 个答案:

答案 0 :(得分:2)

通常,霍夫曼编码的目的是减少消息的长度,即压缩它。这意味着你想要写出位,而不是字符'0'和'1'。因此,将字符代码也存储为位是有意义的,并使用位操作将它们传输到流中。为每个元素存储一对(字符代码,代码长度)足以构造编码。

话虽如此,您可以按照建议使用字符串。这没有错,它可能会让它更容易调试,但它会表现得更差。

答案 1 :(得分:2)

你需要制作某种“BitWriter”。我们在我的大学lecture slides are freely available here的数据结构课程中讨论了Java中用于霍夫曼编码的按位I / O主题。显然是Java!= C,但概念是一样的。

答案 2 :(得分:1)

考虑到你正在尝试压缩某些东西,使用字符串将是一个可怕的想法。您需要将char代码存储为原始二进制文件。