首页 > 其他分享 >C语言哈夫曼编码压缩解压

C语言哈夫曼编码压缩解压

时间:2022-10-31 17:35:00浏览次数:78  
标签:解压 编码 哈夫曼 C语言 读入 频度 CodeFile

C语言哈夫曼编码压缩解压

一、实验目的

掌握哈夫曼编码基本运算以及存储结构表示。

二、实验内容:

1.系统要求包含以下功能

1)初始化:从终端读入字符集大小n,以及n个字符和n个权值(或者读入字符集和频度数据文件),建立哈夫曼树,并将哈夫曼树存入到文件HfmTree中。
2)编码:利用已建好的哈夫曼树(如果不在内存中,则从文件中读入),从文件ToBeTran中读入原文,对原文进行编码,将编码后的结果存入文件CodeFile中。
3)译码:利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。
4)打印:打印输出哈夫曼树,显示ToBeTran, TextFile和CodeFile文件的内容。

三、实验要求:
1.能在机器上正确运行程序;
2.用户界面友好。

四、测试数据:
1.字符集和频度数据(建树依据)

字符 空格 A B C D E F G H
频度 186 64 13 22 32 103 21 15 47
字符 I J K L M N O P Q
频度 57 1 5 32 20 57 63 15 1
字符 R S T U V W X Y Z
频度 48 51 80 23 8 18 1 16 1

2.原文内容“THISISMYPROGRAM”

源码传送门

传送门:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111

标签:解压,编码,哈夫曼,C语言,读入,频度,CodeFile
From: https://www.cnblogs.com/codewriter/p/16845095.html

相关文章

  • C语言面向对象思想
     (17条消息)C语言面向对象思想_lzs_blog的博客-CSDN博客_c实现面向对象C语言面向过程的,而C++是面向对象的。l 面向过程,我认为过程就是步骤,是解决问题的按部就班。l......
  • c语言字符串相关——strlen与sizeof strcpy与memcpy strcmp 数字char型+'0'与-'0
    目录strlen与sizeofstrcpy与memcpystrcpymemcpystrcmp--字符串比较数字char型+'0'与-'0'char-->int:-'0'int-->char:+'0'字母char型+'a'与-'a'atoi等接口使用strl......
  • 编程C语言复习
    运算符的优先级从高到低大致是:单目运算符、单目就是一个操作数,比如++,a++,操作数只有一个a双目就是两个操作数,最熟悉的就是+,a+b,计算a、b的和三目就是三个操作数......
  • C语言之预处理,头文件
    目录1预处理1.1简介1.2预处理器实例1.3预定义宏1.3.1简介1.3.2不带参数的宏1.3.3参数化的宏1.4预处理器运算符1.4.1宏延续运算符()1.4.2字符串常量化运算符(#)1.......
  • C语言之指针详解
    目录1指针1.1简介1.2什么是指针1.3使用指针1.3.1简单使用1.3.2NULL指针1.3.3指针算术运算1.3.3.1定义1.3.3.2遍历数组:递增一个指针1.3.3.3遍历数组:递减一个指针......
  • C语言之存储类,枚举,结构体,共用体,typedef
    目录1存储类1.1auto存储类1.2register存储类1.3static存储类1.4extern存储类2枚举2.1定义2.2操作枚举2.2.1用for循环遍历枚举3结构体3.1定义结构3.2操作结构......
  • C++哈夫曼树
    C++哈夫曼树【讨论问题3】二叉树的应用—哈夫曼树[问题描述]在数据通信系统中,电文传送是经常遇到的问题,传送电文时需要将字符转换成二进制组成的字符串,当然在传送电文......
  • c语言学习---void 数据类型
      这样的语法是错误的:voida=10; void表示无类型,这样定义一个变量a,编译器是无法知道给a分配多大的内存空间的#include<stdio.h>#include<stdlib.h>//1.......
  • C语言学习--文件操作--文件流指针--打开文件
    当打开一个文件时,系统会返回一个结构体,这个结构体有对此文件操作的所有信息调用fopen时,系统返回这个结构体的地址FILE*p=fopen("a.txt")   打开一个文件FIL......
  • c语言学习----枚举
      #include<stdio.h>#include<stdlib.h>#defineFIRST1#defineSECONED2#defineTHIRD3intmain(void){printf("%d,%d,%d\n",FIRST,SECONED,THIR......