电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

数据结构课程设计_哈夫曼树

19页
  • 卖家[上传人]:M****1
  • 文档编号:454910241
  • 上传时间:2022-12-17
  • 文档格式:DOC
  • 文档大小:290KB
  • / 19 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、 . 课 程 设 计课程设计名称: 数据结构课程设计 专 业 班 级 :学 生 姓 名 :学号 :指 导 教 师 : 磊 课程设计时间: 计算机类 专业课程设计任务书学生专业班级学号题 目哈夫曼树编/译码系统课题性质A课题来源D指导教师磊同组无主要容1. 学习掌握并熟练运用C语言进行程序设计,2.针对具体应用问题,选择、设计和实现合适的抽象数据类型;3.进行整体设计使各个函数之间紧密联系起来;任务要求1.综合运用和融化所学理论知识,提高分析和解决实际问题的能力,达到培养良好程序设计能力和习惯的目的,为开发满足问题要求的小型应用软件奠定基础,达到软件工程的综合性基础训练的目的。,2.完成需求分析报告,报告中对关键部分给出图表说明。要求格式规,工作量饱满。参考文献C语言程序设计(第三版)谭浩强 清华大学C Primer Plus(第5版) Stephenprata 人民邮电 审查意见指导教师签字:教研室主任签字: 年 月 日 / 目录目录11需求分析21.1系统介绍21.2程序的输入和输出21.3程序要达到的功能21.4调试过程介绍22概要设计32.1数据结构设计32.2系统模块设计33详

      2、细设计44系统演示124.1主界面124.2数据录入124.3翻译短文134.4反译编码134.5打印文件编码144.6打印哈夫曼树145运行环境156课程心得总结16参考文献;161需求分析1.1系统介绍利用Huffman编码进行通信可以大大提高信道利用率缩短信息传输时间,降低传输成本,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编译码系统。此程序就是为这样的信息收发站写一个Huffman码的编译码系统。1.2程序的输入和输出从终端读入字符集大小n,以及n个字符及各个字符的权值,建立赫夫曼树,并将它存储到文件hfmTree中;利用已建好的赫夫曼树将文件中的字符编码,如果赫夫曼树不在存中,则从文件hfmTree中读取到存;将译得的代码存到文件CodeFile中;利用已建好的赫夫曼树对CodeFile中的代码进行译码,将结果存入文件TextFile中;最后将已在存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。1.3程序

      3、要达到的功能用户可以利用菜单根据自己的需要来选择要进行编码或是译码,并将转换好的字符或编码以文件的形式存到相应的文件里面。1.4调试过程介绍(l)利用教材中的数据调试程序。(2)用下表给出的字符集和频度的实际统计数据建立哈夫曼树,并实现以下报文的编码和译码:THIS PROGRAM IS MY FAVORITE。字符ABCDEFGHIJKLMNOPQRSTUVWXYZ频度18664132232103211547571532205763151485180238181161选择2,输入THIS PROGRAM IS MY FAVORITE,屏幕上显示01010同时文件codefile里面也出现相应的代码选择3,从codefile中调入代码,终端显示THIS PROGRAM IS MY FAVORITE,并且文件textfile中也相应的存入了这段话。选择4,文件CodeFile以紧凑格式显示在终端上。选择5,将已在存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。选择其他的数字,将出现出错提示,并重新回到选择菜单。2概要设计2

      4、.1数据结构设计InitHuffman(Huffman Hfm);/初始化哈夫曼树Encoding(Huffman Hfm); /翻译短文Decoding(Huffman Hfm); /反译编码Print1(Huffman Hfm); /打印文件编码Print2(Huffman Hfm); /打印哈夫曼树typedef char *HuffmanCode;/动态分配数组存储霍夫曼表码表typedef struct unsigned int weight; unsigned int parent,lchild,rchild;HTNode,*HuffmanTree;/动态分配数组存储霍夫曼树typedef struct HuffmanTree HT; char *c; int length; HuffmanCode HC;Huffman;/分配数组存储字符串及其对应的霍夫曼树Huffman Hfm;2.2系统模块设计哈夫曼树编/译码系统录入数据翻译短文反译编码打印文件编码打印哈夫曼树退出系统3详细设计#include #include #include #include#define NU

      5、LL 0#define OK 1#define ERROR 0#define OVERFLOW -2#define MAX_NUM 32767#define MAX 60typedef char *HuffmanCode;/动态分配数组存储哈夫曼表码表typedef struct unsigned int weight; unsigned int parent,lchild,rchild;HTNode,*HuffmanTree;/动态分配数组存储哈夫曼树typedef struct HuffmanTree HT; char *c; int length; HuffmanCode HC;Huffman;/全局结构体变量,来存储字符与代码/*-寻找权值最小的两个节点-*/void Select(HuffmanTree HT,int end,int *s1,int *s2) int i; int min1=MAX_NUM; int min2; for (i=1;i=end;i+)/*遍历查找权值最小的结点S1*/ if (HTi.parent=0&HTi.weightmin1) *s1=i;

      6、 min1=HTi.weight; min2=MAX_NUM; for(i=1;iHTi.weight) *s2=i; min2=HTi.weight; /*-对哈夫曼树进行编码-*/Huffman HuffmanCoding(Huffman Hfm) int i,n,m,s1,s2,start; int c,f; char *cd; n=Hfm.length; if(n=1) return Hfm; m=2*n-1; for(i=n+1;i=m;+i) /*选择HT1.i-1中无双亲且权值最小的两个节点,其序号为s1,s2*/ Select(Hfm.HT,i-1,&s1,&s2); Hfm.HTs1.parent=i; /*修改父亲位置*/ Hfm.HTs2.parent=i; Hfm.HTi.lchild=s1; /*修改孩子位置*/ Hfm.HTi.rchild=s2; Hfm.HTi.weight=Hfm.HTs1.weight+Hfm.HTs2.weight;/*父亲结点权值为左右孩子权值之和*/ /*从叶子结点到根逆向求每个字符的哈夫曼编码*/ Hfm.HC=(Huffma

      7、nCode)malloc(n+1)*sizeof(char *);/*分配n个字符编码的头指针向量*/ cd=(char *)malloc(n*sizeof(char);/*分配求编码的工作空间*/ cdn-1=0;/*编码结束符*/ for(i=1;i=n;+i)/*逐个字符求哈夫曼编码*/ start=n-1;/*编码结束符位置*/ for(c=i,f=Hfm.HTi.parent;f!=0;c=f,f=Hfm.HTf.parent)/*从叶子到根逆向求编码*/ if(c=Hfm.HTf.lchild) cd-start=0; else cd-start=1; Hfm.HCi=(char *)malloc(n-start)*sizeof(char); strcpy(Hfm.HCi,&cdstart);/*从cd复制编码到Hfm.HC*/ free(cd); return Hfm;/*-录入数据函数-*/Huffman InputHuffman(Huffman Hfm) int i,n; printf(nn*录入数据*n); printf(录入的字符及其权值将保存于:hfmTree n); printf(请输入录入字符个数: ); scanf(%d,&n); if(n=1) printf

      《数据结构课程设计_哈夫曼树》由会员M****1分享,可在线阅读,更多相关《数据结构课程设计_哈夫曼树》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.