c - 如何将文本文件实现为链表?

标签 c compression huffman-code

我想做的是霍夫曼算法。该程序的规范之一是用户将创建一个 .txt 文件,其中包含字符及其相应的频率。所以它就像一个字符列表,每个字符旁边是该字符的权重。下面是 that.txt 文件的示例:

H5
J4
K6
S9
L2
N1

我所做的是读取并显示 .txt 文件。我很难将它实现到链表中。我尝试阅读 fread() fwrite() 和所有其他函数,但我真的无法理解它的要点。非常感谢任何形式的帮助。 :D

最佳答案

尽管您需要一棵树,但我假设您使用 struct 进行存储,例如

struct list {
    char *symbol;
    int prob;
    struct list *next;
};

因此,如果您已成功读取文件,那么您将获得字符串“H5”、“J4”等。您所要做的就是使用 strtok 分割字符串。或类似的功能。现在您可以将符号复制到 *symbol 并使用 atoi 转换概率。到一个int,然后将其写入prob

编辑:忘记提及,您应该考虑文件的结构,因为另一方面,“H5”可能不能很好地用 strtok 进行解析也许你根本不需要 strtok,如果第一个字符始终是符号,之后只是计数。

编辑 #2:同时给出 fscanf尝试一下(如果您知道格式的话,比 strtok 容易得多)。

关于c - 如何将文本文件实现为链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10185664/

相关文章:

algorithm - 霍夫曼压缩算法

c - 为 void* 赋值

c - const 限定指针的 restrict 是多余的吗?

c - 初始化一个int有什么副作用吗?

http - 以编程方式设置 Jetty GzipHandler

algorithm - 将字节转换为包含 Scala 中每个单独位的 bool 数组的最快方法是什么?

c++ - 抄送 : language CC not recognized

Ruby zlib deflate 海量数据

compression - Sequitur算法的Python实现?

c++ - 在 C++ 中紧凑地保存霍夫曼树