ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:253.42KB ,
资源ID:15289956      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15289956.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(通信工程课程设计Word文件下载.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

通信工程课程设计Word文件下载.docx

1、但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原).对于双工信道(既可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼的编/译码器。该系统可进行字符与二进制码值间转换。可用于电脑系统中用户的文件,这样可节省内存,当用户使用时又可转换为字符形式。还可实现对所给文件进行统计字符出现频率,及相应二进制码值,并对文件编码解码。1.建立哈夫曼树:从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树.2.编码:利用已建立好的哈夫曼树,获得各个字符的哈夫曼编码,并对正文进行编码,然后保存编码结果至文件中。3.译码:利

2、用已建立好的哈夫曼树将文件中的编码进行译码获得原文件。四、概要设计 1 .系统结构图(功能模块图) 2 .功能模块说明:(1)统计各叶子节点的权值:打开需要编码的文件,以字母为关键字,统计各字母出现的频率作为权值,记录并返回;(2)建立哈夫曼树:根据统计的权值,建立哈夫曼树的节点,总是从节点中选取权值最小和权值次小且双亲为0的两个节点加入到哈夫曼树中,复上述过程至所有权值均被选择过,便可建立一棵哈夫曼树;(3)对所建哈夫曼树进行编码:因权值所在的节点均是树的叶子节点,故从叶子节点开始向上推找其双亲节点,逆向求各叶子节点的编码,若该叶子节点是双亲的左孩子,则编码为0,反之为1,以此类推,便可得到

3、每个叶子节点的哈夫曼编码,再利用已获得的各叶子的编码对原文件进行编码,并把编码存入文件中;(4)译码:根据文件中存放的编码从根节点开始,读取字符,字符为0走左,为1走右,直至找到叶子节点为止,以此得到译码,并把译码存入中.五、详细设计及运行结果 1.计算权值:2建立哈夫曼树:3.编码:4.译码:5主函数:6.部分运行结果:六、调试情况,设计技巧及体会整个程序设计过程中,程序模块的设计相对明朗一些,桌面设计较为简洁省去了没有必要在桌面现显示的操作项目,是整个程序明了易于操作。然而模块内部的联系比较紧密,关联程度高,且模块之间的值传递也比较简单,增加了程序的可读性,同时也便于调试。不足之处在于自己

4、目前所掌握的知识有限,在编写程序的过程中,所能用到的语言都较为简单,因此在设计算法时,有些地方设计的不是很好,如:循环和判断条件是否满足的次数较多等;时间复杂度较大,从而影响了程序的运行速度。改进这一问题的方法就是掌握好C语言和数据结构的基础知识,平时应多写程序,并善于分析自己或他人的程序,找出每一个程序中的合理和不足之处,长期坚持下来的话,自己在编程方面的能力一点会大有提高的。这一次做有关程序语言课程实习,遇到的主要问题不是前期的编码程序了,而是在调试过程,由于编写程序或录入程序时的粗心大意给后面的调试带来了很多问题:C语言的使用不规范,有些习惯上的东西没有遵循导致有些细小的错误不易发现。如

5、:字母O和数字0是不同类型的常量,在使用过程中没有细心地加以区别,导致一些错误;又如:一般在宏定义中使用大写字母,而我却用了小写,在后面的函数中,又用相同的字母定义了变量,导致程序无法正常运行,发现这易错误花费很长时间,这些本都是可以避免的。因此编写程序的过程中一定要正确规范地使用C语言。调试的过程之前都是在TC2.0的环境下进行的,这一次使用的是Visual C+6.0,刚开始的时候使用的不是很熟练,但经过几次的学习之后,目前已经可以很好地使用该工具了,同时也改变了以前遇到问题就问老师问同学,不自己先进行调试的不好的习惯。在设计的过程中,老师和同学都给了很多的帮助,有时因一个问题和同学讨论花

6、了很长的一段时间,但在问题解决了之后,我们都觉得时间花的值得,因为这些问题已经令我们印象深刻了。通过此次一周半的课程设计,我对这学期所学的数据结构的知识有了更为深刻的认识,同时再一次使用C语言,使得上学期学的C语言的相关知识不被遗忘。七、参考文献1.C语言程序设计-科学出版社,王曙燕主编2.数据结构-C语言描述-高等教育出版社,耿国华主编八、附录:源代码#includestring.hconio.hstdlib.h#define MAX 100typedef struct int weight; char x; int p; int lc,rc;Haffuman;Haffuman r2*MAX

7、-1;typedef struct int s; char bitsMAX;ctype;ctype codeMAX;char stringMAX=0; char data; int freq;NODE;NODE NodeMAX;int k;/用于统计所打开的文件的字符数char filename30;/要操作的文件数组/*字符个数统计函数*/void tongjihanshu() char t; char c; FILE *fp; printf(请输入要进行操作的文件的名字以及储存路径:n); gets(filename);/输入文件名以及储存路径 fp=fopen(filename,rt i

8、f(fp=NULL) printf(打开文件失败,你所输入的件路径可能错误! t=getch(); while(c=getc(fp)!=EOF) k+; fclose(fp);%d,k);/*求取权值函数*void ReadSourceFile() char strMAX; int j,i=0; char l; if(fp=fopen(filename,r)=NULL) l=getch(); exit(0); stri=fgetc(fp); while(stri! str+i=fgetc(fp); stri=0; for(j=0;jMAX;j+) Nodej.data=0; Nodej.fre

9、q=0; /对nod函数进行初初始化 Node0.data=str0; Node0.freq=1; for(j=1;=k;j+)/对数组中的字符进行求权值/ for(i=0;Nodei.data&strj!=Nodei.data;i+) ; Nodei.data=strj; Nodei.freq+;/*int SethaffumanTree() /*建立哈夫曼树*/*typedef struct*/ int m1,m2,x1,x2,j,t; int i=0,s=0; while(Nodei.data) ri+1.weight=Nodei.freq; ri+1.x=Nodei.data; ri+

10、1.p=0; ri+1.lc=0; ri+1.rc=0; i+; /至此r的初始化完成 s=i;/s得到所有的不同字符个数 i=0; while(is-1) m1=32767; m2=32767; x1=0; x2=0; for(j=1;=s+i; if(rj.weightm1)&(rj.p=0)/等于0表明没进树 m2=m1;/m1用于放最小权值 x2=x1;/x1,x2分别为r的下标 m1=rj.weight;/权值也随着赋予 x1=j; else if(rj.weightm2)&(rj.p=0) m2=rj.weight;/m2中放置次小权值 x2=j; i+; rx1.p=s+i; rx2.p=s+i;/次小和最小的双亲接点下标相同 rs+i.weight=rx1.weight+rx2.weight; rs+i.lc=x1;/左孩子的下标 rs+i.rc=x2;/右孩子的下标 rs+i.p=0;/双亲继续和其他接点相比较 t=2*s-1; return t;/*void HaffumanCode(int t) /*哈夫曼编码函数*/ int i,p,s,n,j,m; ctype md;/*typedef struct */用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1