当前位置: 首页 > 知识库问答 >
问题:

需要一些关于C语言中简单无损压缩算法的想法吗

南门朗
2023-03-14

我正在学习编程入门课程,我们的一项作业是用C语言编写一个无损压缩程序。我们唯一的限制是不能使用STL、静态变量或全局变量。我发现很多压缩算法都需要使用map/multimap,我不允许使用,所以哈夫曼编码和LZW几乎是不可能的,除非我能编写自己的map类并使其工作。

我发现很多算法也使用std::字符串,但我完全可以使用cstring(我们被允许使用)。我还可以访问我的教授创建的一些我们可以使用的库。我们可以访问以下内容:

  • 各种树木,如红黑、AVL、八字树
  • 二进制堆
  • 各种哈希表,例如几个开放寻址实现,以及单独的链接
  • 向量、链表和队列

因此,除了上述内容之外,我还必须为自己编写代码

有人推荐任何非常简单的无损压缩算法吗?霍夫曼和我在网上找到的其他压缩算法似乎非常复杂,更不用说我不能在STL中使用map/multimap:(。我不是在这里寻找绝对最快的算法,只是作为起点的东西,我们将根据需要调整它以使其运行得更快。

共有1个答案

长孙星汉
2023-03-14

我发现很多压缩算法都需要使用映射/多重映射,但我不允许使用,因此哈夫曼编码和LZW几乎是不可能的

嗯?当然不是。地图是一个非常薄的抽象,可以在您的树或哈希表实现之一上实现。

除非我可以编写自己的map类并使其工作

所以这可能是练习的重点。

继续吧。您可以在汇编中执行OO。您可以在没有(现成)数据结构的情况下编写算法。这只是更多的工作。而且更容易出错。还有更多的教育(我希望:)显然也需要好的学费)

 类似资料:
  • 我想知道我们可以在多大程度上进行无损数据压缩;我无法找到一个无损算法的在线模拟器来执行一些经验测试。我可以自己做一个,但不幸的是,我在这段时间没有足够的时间;我仍然对我的直觉感到好奇,我将解释一下。 让我们只看两种更流行的算法:

  • 本文向大家介绍C#无损压缩图片,包括了C#无损压缩图片的使用技巧和注意事项,需要的朋友参考一下 话不多说,请看代码: 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!

  • 我目前正试图为我正在从事的一个项目实现一种无损数据压缩算法。目标是压缩浮点值的固定大小列表。代码必须用C编写,不能使用动态内存分配。这让我很伤心,因为大多数无损算法(如果不是全部的话)都需要一些动态分配。 我一直在研究的两个主要算法是哈夫曼算法和算术算法。如果没有动态内存分配,这个任务可能吗?你们有什么方法或想法吗?如果您认为不可能,请告诉我原因:-) 任何帮助/建议都会有帮助!

  • 我正在寻找一种好的无损压缩算法,它可以非常快速地压缩/解压缩少量数据,例如0到1之间的256个浮点。我知道RLE,但也许还有更好的。 背景是我正在使用CUDA处理体积数据(例如384³浮点),而不是显式存储体积,我希望将其划分为8x4大小的块并存储压缩块。CUDA内核(每个块由8x8x4个线程组成)解压缩相应的块,对其进行处理并再次压缩。 非常感谢您的建议!

  • 本文向大家介绍有损压缩和无损压缩之间的区别,包括了有损压缩和无损压缩之间的区别的使用技巧和注意事项,需要的朋友参考一下 数据压缩是指将大文件缩小为较小大小的文件并可以再次将其解压缩为大文件的技术。有损压缩会将大文件恢复为原始格式,但会丢失一些数据,这是不明显的,而无损压缩会将大文件恢复为原始格式而不会丢失任何数据。 以下是有损压缩和无损压缩之间的一些重要区别。 序号 键 有损压缩 无损压缩 1 数

  • 现在,编辑器在使用注释方法的地方显示警告。然后显示使用的建议。当我接受它的更改时,它会将代码转换为此,警告消失。 使用有意义吗? 实现是 所以如果为空,我的代码仍然会崩溃。 我们应该对此进行空检查。 我认为比好,你说呢?如果是,则编辑器不应建议在此处使用。 因为在具有状态(如)的字段中使用要求NonNull是不安全的。我是否错过了的一些好处?