- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程的设计实验的报告
+
南京信息工程大学
数据结构课程设计
题目:赫夫曼编码
院、 系:滨江学院
学科专业:计算机科学与技术
学 生:
学 号:
指导教师: 王鹤蒙
2010年12月22日目 录
1课程设计的题目-----------------------------0
2课程设计的目的(设计要解决的问题)----------1
3概要设计(函数划分、总体设计)----------------1
4详细设计(算法、流程图、程序)-----------------2
5调试结果-------------------------- -------32
6课程设计总结---------------- -------------33
7心得体会----------------------------------34
二课程设计的目的
1巩固构造赫夫曼树的算法。
2设计实验用程序实现赫夫曼树的构造。
3熟悉用先序、中序或后序的访问方法得到个叶子结点的赫夫曼编码。
三概要设计(函数划分、总体设计)
一总体设计
输入一个字符串用结构体链表存储字符串中出现的不同字符及其出现的次数。
定义赫夫曼数的结点结构体,把不同的字符及其在字符串中出现的次数作为叶子结点的元素及其权值,统计叶子结点的个数n,开辟可以存储2*n个结点的顺序表,来赫夫曼树的各个结点,然后按照一定的规则构造赫夫曼树。
开辟一个可以存储叶子结点元素及指向存储其赫夫曼编码链表的指针的顺序表,然后从叶子结点开始向上访问,是左孩子的把“0”接进链表是右孩子的把“1”接进链表,直到根结点,然后把叶子结点的元素及存储其赫夫曼链表的头指针读入顺序表,直到把所有的叶子结点的元素及指向存储其赫夫曼编码链表的头指针读入顺序表,这样得到的赫夫曼编码是倒序的。
从存储其叶子结点及指向存储其赫夫曼编码链表头指针的顺序表表头开始顺序访问各元素,在输出其赫夫曼编码之前,把链表中的编码顺序读入到等长的栈中,然后编码出栈就会得到顺序的赫夫曼编码,直到把所有的叶子结点都访问到。
用一个字符型的指针指向字符串的第一个字符,从存储叶子结点元素及指向存储其赫夫曼编码链表的头指针的顺序表表头开始访问顺序表中的各元素,直到找到叶子结点的元素和当前字符相等就结束访输出赫夫曼编码,回到表头,指针后移,直到输出字符串的最后一个字符的赫夫曼编码,这样就得到输入字符串的赫夫曼编码。
二函数划分
该程序有一个主函数和多个子函数,主函数完成对子函数的调用,各子函数实现相应的功能。
子函数:
结点的开辟。
实现对输入字符串中出现的不同字符及其出现字数的信息记录。
用叶子结点构造赫夫曼树。
获得构造的赫夫曼树中所有叶子结点的元素及其赫夫曼编码。
输出各叶子结点元素及其对应的赫夫曼编码。
输出输入的字符串的赫夫曼编码。
调用各子函数
四详细设计(算法、流程图、程序)
一算法
1创建存储叶子结点元素及其权值的链表
定义结构体node,其数据成员包括,字符型的元素a和整型元素b和指向node的next指针,来存储叶子结点的内容和权值。
定义三个指向node的指针head、p1、p2和字符指针n、t、h,调用setnode()函数开辟一个结点让head指向该结点,p1=head,让n指向输入字符串的第一个元素,当n指向的内容不是‘\0’时,如果n指向字符串的第一个字符,则开辟一个结点,让p2指向该结点,让t指向字符串的第一个元素,当*t!=‘\0’并且*t==*n则r++(r为整型,初始值为0),把p2-a=*n,p2-b=r,p1-next=p2,p1=p2,n++,t回到字符串首;否则i++(i为整型,初始值为1)r=0,j=1;让t指向字符串第一个元素,当*t!=‘\0’,如果*t==*n,r++,t++;让h指向字符串的第一个元素,当h!=n时如果*h==*n就跳出此循环,否则,j++,h++如果i==j则开辟新的结点p2-a=*n,p2-b=r,p1-next=p2,p1=p2
;n++,当把最后一个结点连入链表中,p1-next=NULL,然后把p1=head-next,当p!=NULL时输出结点中叶子结点的元素和对应的权值;最后返回head。
//setnode()函数的算法:设指向node的指针p,用malloc开辟一个node结点并让p指向该结点,返回p。
2构造赫夫曼树
定义结构体node1,其数据项字符型a(存放叶子结点元素)、整型weight(存放对应权值)、整型sign(起标记作用)、和指向左、右孩子及父母结点的指针lchild、rchild和parent。
定义指向node1的指针p0、p1、p2、p3、p4
您可能关注的文档
- 戒毒社工胜任能力.ppt
- 我美丽家乡云南楚雄双柏鄂嘉镇.doc
- 战略管理概念及的案例.doc
- 战略的规划.ppt
- 战略管理的案例分析江龙.ppt
- 战斧C.A75K M2 V40主板培训的资料.pptx
- 戒烟治疗方法畅沛.ppt
- 截切体与相贯体投影.doc
- 戛纳生活,我们追寻生活.doc
- 戴尔订单履行的模式.ppt
- 2026年消防设施操作员之消防设备基础知识考试题库500道带答案(新).docx
- 销售岗前培训课件.ppt
- 2026年消防设备操作员考试题库500道(典型题).docx
- 2026年消防设施操作员之消防设备高级技能考试题库300道附答案(实用).docx
- 2026年消防设施操作员之消防设备高级技能考试题库300道标准卷.docx
- 2026年材料员之材料员基础知识考试题库300道附完整答案(全优).docx
- 2026年材料员之材料员基础知识考试题库300道带答案(培优a卷).docx
- 2026年机械员考试题库含答案(轻巧夺冠).docx
- 2026年材料员之材料员基础知识考试题库300道【夺分金卷】.docx
- 2026年期货从业资格之期货法律法规考试题库500道(考点精练).docx
最近下载
- 职业技能鉴定国家题库机修钳工高级理论知识试卷高级钳工鉴定试题库(附答案).pdf VIP
- 2017届高考文言文概括分析题优秀课件资料.ppt VIP
- 北师大版一年级上册(2024)综合实践 淘气的一天 课件(共41张PPT).pptx VIP
- 眼化学烧伤的急救措施.pptx
- 广东高院民事再审立案注意事项.docx VIP
- 卫生院服务基层行资料-2.2.1.8眼、耳鼻喉医疗服务.docx VIP
- SolidWorks初级培训(课件-50张).ppt VIP
- 《三十六计——暗度陈仓》绘本阅读.pptx VIP
- 2020年10月自学考试经济思想史试题.doc VIP
- 金田JTE 386S2变频器使用手册.pdf
文档评论(0)