问题描述:利用哈夫曼编码进行信息通讯可以大大提高信道利用率,缩短信息传输时间,降低传输成本。
但是,这要求在发送端通过一个编码系统对待传数据预先编码;
在接收端将传来的数据进行译码(复原)。
对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。
试为这样的信息收发站写一个哈夫曼码的编译码系统。
基本要求:一个完整的系统应具有以下功能:(l)I:初始化(Initialization)。
从终端读入字符集大小n,及n个字符和m个权值,建立哈夫曼树,并将它存于文件hfmtree中。
(2)C:编码(Coding)。
利用已建好的哈夫曼树(如不在内存,则从文件hfmtree中读入),对文件tobetrans中的正文进行编码,然后将结果存入文件codefile中。
(3)D:编码(Decoding)。
利用已建好的哈夫曼树将文件codefile中的代码进行译码,结果存入文件textfile中。
(4)P:印代码文件(Print)。
将文件codefile以紧凑格式显示在终端上,每行50个代码。
同时将此字符方式的编码文件写入文件codeprint中。
(5)T:印哈夫曼树(Treeprinting)。
将已在内存中的哈夫曼树以直观的方式(树或凹入表方式)显示在终端上,同时将此字符方式的哈夫曼树写入文件treeprint中。
实现提示根据题目要求把程序划成5个模块,设计成菜单方式,每次执行一个模块后返回菜单。
除了初始化(I)过程外,在每次执行时都经过一次读取磁盘文件数据。
这是为了如果在程序执行后一直没有进行初始化(I)过程,为了能使后面的操作顺利进行,可以通过读取旧的数据来进行工作。
比如:如果程序的工作需要的字符集和权值数据是固定的,只要在安装程序时进行一次初始(I)化操作就可以了。
再在次运行程序时,不管进行那项操作都可以把需要的数据读入到内存。
算法分析本程序主要用到了三个算法。
(1)哈夫曼编码在初始化(I)的过程中间,要用输入的字符和权值建立哈夫曼树并求得哈夫曼编码。
先将输入的字符和权值存放到一个结构体数组中,建立哈夫曼树,将计算所的哈夫曼编码存储到另一个结构体数组中。
(2)串的匹配在编码(D)的过程中间,要对已经编码过的代码译码,可利用循环,将代码中的与哈夫曼编码的长度相同的串与这个哈夫曼编码比较,如果相等就回显并存入文件。
(3)二叉树的遍历在印哈夫曼树(T)的中,因为哈夫曼树也是二叉树,所以就要利用二叉树的先序遍历将哈夫曼树输出。
[测试数据]根据实验要求,在tobetrans.dat中输入"THISPROGRAMISMYFAVORITE",字符集和其频度如下:字符 __ A B C D E F G H I J K L M频度 186 64 23 22 32 103 21 15 47 57 1 5 32 20字符 N O P Q R S T U V W X Y Z 频度 20 56 19 2 50 51 55 30 10 11 2 21 2
2021/11/10 18:15:21 4KB 课程设计 c/c++ 哈夫曼树 编码
1
智能终端大数据分析,有助于了解行业概况,做出更及时的反馈
2015/9/12 14:35:33 1.23MB mo to lo
1
本程序次要是针对LinuxIPC通信初学者对Linux下消息队列通信机制,多线程编程,字符串处理,链表操作等基本概念的练习。
通过多个终端登录,不同终端上登录用户实现私聊,群聊,查看在线用户,简单注册(没有实现用户保存,类似于公共聊天室)
2015/7/25 18:27:07 14KB Linux 聊天室 消息队列
1
在此代码包中,已经实现了以下功能:1.读取MPU6050传感器的数据(x,y,z方向的加速度以及角速度,还有温度共七个数据)2.实现了将MPU6050的六元姿势数据通过四元数算法,得到横滚角,俯仰角,航向角(具体实现见MPU6050.c驱动代码)3.实现了通过Z-stack协议栈,将传感器数据从终端发送到协调器(该发送方法所有传感器通用,只要你能获取你所需的传感器的数据,就可以使用我的代码进行数据的发送)。
4.该工程可以直接使用IAR软件打开并实现仿真和下载
2019/2/27 16:19:21 15.65MB CC2530 Zigbee协议栈 Z-stack MPU6050
1
主要面向居家养老的老年群体心脑血管疾病、糖尿病监测和健康护理方面快速检测血压、血糖指标,自助进行心脏听诊。
一方面这些测量所得的健康数据可以被推送到指定的远程医疗机构或社区卫生服务站,医生专家们依此对老年人建立长久的电子医疗档案,以便远程分析监控或就医治疗;
另一方面,终端也可根据测量数据智能分析辅助诊断,如血压异常,心脏听诊音异常等,并将这些数据绘制成趋势图表统计近期健康状况;
特别的终端还加入亲情关怀功能,将测量的健康数据以短信的方式定时发送到指定的家属手机收缩
1
目录01.功耗V3.602.信号指示V2.1203.电源管理V3.904.GSM&GPRS;&EGPRS;V2.605.WCDMAV2.606.LTEV1.1107.TDSCDMAV2.1008.CDMAV2.709.HSPA数据业务V2.010.RFIDSIMV2.211.NFCV1.912.BluetoothV2.813.WiFiV2.814.GPSV2.1115.CameraV3.616.FMV1.917.射频互扰V1.018.USB功能V1.919.LCDV2.820.TPV2.921.SensorV3.1222.小器件V1.923.音频V3.224.冲突V1.1025.温升V3.726.OTAV2.427.SARV1.928.EMCV1.929.SafetyV1.930.机械可靠性V3.0A标31.机械可靠性V3.0B标32.机械可靠性测试前后检查V1.033.环境可靠性V2.134.长期稳定性V3.035.中长期老化V2.136.单体测试V1.237.皮套测试V1.038.LTE数据业务39.ISDB-T功能测试
2020/3/12 17:21:40 11.28MB 华为硬件测试
1
XShell7免费版是一款高效专业的实用型免费SSH客户端。
XShell简单强悍,支持标签式的环境,动态端口转发,自定义键的映射关系,用户定义的按钮,VB脚本,显示2字节字符和国际言语支持UNICODE的终端
2020/4/27 8:03:07 45.32MB xhsell xftp
1
应急广播通信技术领域已经存在国标规范《GDJ089-2018应急广播大喇叭系统技术规范》该国标规范规定了应急广播系统中几个重要系统的通信协议,包括应急广播平台和应急广播适配器IP通信协议,应急广播适配器和应急广播终端的IP通信协议,应急广播平台和应急广播终端的IP通信协议,应急广播终端回传数据到平台或者适配器的IP回传通信协议。
本文提供一个数据解析方法和工具,提供用户输入十六进制的国标应急广播通信数据后,解析并输出格式化统一的数据。
并可以自动计算校验数据和签名数据能否正确。
2018/1/7 3:28:25 610KB 应急广播 国标协议
1
STM8L051单片机实现串口空闲终端接收数据,并将数据回传PC机
2020/4/17 11:10:48 6.89MB STM8 C语言 IAR
1
包含(项目书、PPT、gns3工程文件)集团为了加快信息化建设,拟为某地的H分公司部署局域网络,并连接到公司总部的网络升级的网络将建设一个以集团办公自动化、电子商务、业务综合管理、多媒体视频会议、近程通讯、信息发布及查询为核心,以现代网络技术为依托,技术先进、扩展性强,将集团的各种办公室、多媒体会议室、PC终端设备、应用系统通过网络连接起来,实现内、外沟通的现代化计算机网络系统。
1
共 714 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡