欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数据结构大作业.pdf

    • 资源ID:75977294       资源大小:409.87KB        全文页数:12页
    • 资源格式: PDF        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构大作业.pdf

    -WORD-WORD 格式格式-可编辑可编辑-专业资料专业资料-实实 验验 报报 告告学号姓名实验名称哈夫曼编码器设计指导老师班级实验日期实验报告具体内容一般应包括:一、实验目的和要求;二、实验原理;三、主要仪器设备(软件);四、实验内容及实验数据记录;五、实验数据处理与分析;六、问题与建议预习分操作分报告分总成绩-完整版学习资料分享-WORD-WORD 格式格式-可编辑可编辑-专业资料专业资料-一、实验目的和要求:哈夫曼(Huffman)树与哈夫曼码1输入一个文本,统计各字符出现的频度,输出结果;2使用二叉链表或三叉链表作存储结构,构造哈夫曼(Huffman)树;3确定和输出各字符的哈夫曼码;4.输入一个由 0 和 1 组成的代码序列,翻译并输出与之对应的文本;要求:一个完整的系统应具有以下功能:(1)初始化:从终端读入一段英文字符,统计每个字符出现的频率,建立赫夫曼树,并将该树存入某文件;(2)编码:利用建好的赫夫曼树对各字符进行编码,用列表的形式显示在屏幕上,并将编码结果存入另一文件中;(3)解码:利用保存的赫夫曼编码,对任意输入的 0,1 序列能正确解码二、实验思路:对输入的一串字符串,用循环进行出现频率的统计,出现频率即为节点的权值。为了方便将叶子节点数定义成为全局变量。创建哈夫曼树时,先给哈夫曼树创建一个节点,依次对叶子节点和非叶子节点进行初始化。将全部的叶子节点中最小权值的两个节点的权值进行相加即为非叶子节点。进行哈夫曼编码时,从叶子节点到根节点进行编码。而进行解码时,是从根节点到叶子节点,向左为 0 向右为 1。由于书上有相关代码,一部分代码直接借用。三、实验代码:#define MAX 50typedef structint weight;int parent,lchild,rchild;HTNode,*HuffmanTree;typedef char*HuffmanCode;int n;/叶子结点数char aMAX;/接受字符串的数组void select(HuffmanTree*ht,int i,int*s1,int*s2)int j=1;for(j=1;j=i;j+)if(*ht)j.parent=0)*s1=j;break;for(j=1;j=i;j+)if(j=*s1)continue;elseif(*ht)j.parent=0)*s2=j;break;for(j=1;j=i;j+)/选择两个最小权值的结点-完整版学习资料分享-WORD-WORD 格式格式-可编辑可编辑-专业资料专业资料-if(*ht)j.weight(*ht)*s1.weight&(*ht)j.parent=0&(*ht)*s1.weight!=(*ht)*s2.weight)*s1=j;for(j=1;j=i;j+)if(j=*s1)continue;elseif(*ht)j.weight(*ht)*s2.weight&(*ht)j.parent=0)*s2=j;void Creattree(HuffmanTree*ht,HuffmanCode*hc,int*w)int m,i,s1,s2;m=2*n-1;*ht=(HuffmanTree)malloc(m+1)*sizeof(HTNode);printf(Haffmantree:n);for(i=1;i=n;i+)/数组 Huffnode 初始化(*ht)i.weight=wi;(*ht)i.parent=0;(*ht)i.lchild=0;(*ht)i.rchild=0;for(i=n+1;i=m;i+)(*ht)i.weight=0;(*ht)i.parent=0;(*ht)i.lchild=0;(*ht)i.rchild=0;for(i=n+1;i=m;i+)/建立非叶子结点,Huffmantreeselect(ht,i-1,&s1,&s2);(*ht)s1.parent=i;(*ht)s2.parent=i;if(*ht)s1.weight(*ht)s2.weight)(*ht)i.lchild=s1;(*ht)i.rchild=s2;-完整版学习资料分享-WORD-WORD 格式格式-可编辑可编辑-专业资料专业资料-else(*ht)i.lchild=s1;(*ht)i.rchild=s2;(*ht)i.weight=(*ht)s1.weight+(*ht)s2.weight;printf(%d=n,(*ht)i.weight,(*ht)s1.weight,(*ht)s2.weight);void charge(int*w)printf(put in a stringn);scanf(%s,&a);int i,j,k=1;for(k=1;k=n;k+)wk=1;k=1;for(i=0;ai!=0;i+)if(ai=#)continue;for(j=i+1;aj!=0;j+)if(ai=aj)wk+;aj=#;printf(%c 的频数为:,ai);printf(%dn,wk);k+;void creatnode(HuffmanTree*ht,HuffmanCode*hc)char*cd;int i,start,c,p;*hc=(HuffmanCode)malloc(n+1)*sizeof(char*);cd=(char*)malloc(n*sizeof(char);cdn-1=0;printf(haffman编码:n);for(i=1;i=n;i+)start=n-1;-完整版学习资料分享-WORD-WORD 格式格式-可编辑可编辑-专业资料专业资料-for(c=i,p=(*ht)i.parent;p!=0;c=p,p=(*ht)p.parent)if(*ht)p.lchild=c)cd-start=0;else cd-start=1;(*hc)i=(char*)malloc(n-start)*sizeof(char);strcpy(*hc)i,&cdstart);printf(w=%d,(*ht)i.weight);printf(%sn,(*hc)i);free(cd);void translate(HuffmanTree*ht,int*w)int p;char sMAX;int m,k,i;m=0;printf(请输入一串 01 代码:n);scanf(%s,s);p=2*n-1;printf(对应的字符为:n);for(i=0;si!=0;i+)if(si=0)p=(*ht)p.lchild;if(si=1)p=(*ht)p.rchild;if(*ht)p.lchild=0&(*ht)p.rchild=0)for(k=1;wk!=(*ht)p.weight;k+)m=m+wk;printf(%c,am);if(si!=0)p=2*n-1;m=0;printf(n);四、实验数据-完整版学习资料分享-WORD-WORD 格式格式-可编辑可编辑-专业资料专业资料-五、实验小结:通过这次试验,我学会了如何进行哈夫曼树的创建,哈弗曼编码以及解码。实验中遇到的问题有:如何统计一个字符串中一个字符出现的次数以及如何将每个字符出现的次数保存;如何将一个数组传入到子函数中,在试验中常常出现数据无法传入子函数中的情况;如何在所有的节点中查找出最小的两个叶子节点;通过这次试验发现自己对子函数的参数的传入,指针的运用十分生疏。C 语言的一些内容也有些遗忘。-完整版学习资料分享-WORD-WORD 格式格式-可编辑可编辑-专业资料专业资料-六、流程图Select 函数的 流程图:-完整版学习资料分享-WORD-WORD 格式格式-可编辑可编辑-专业资料专业资料-Creattree 的函数流程图:-完整版学习资料分享-WORD-WORD 格式格式-可编辑可编辑-专业资料专业资料-Charge 的函数流程图:-完整版学习资料分享-WORD-WORD 格式格式-可编辑可编辑-专业资料专业资料-Creatnode 的函数流程图:-完整版学习资料分享-WORD-WORD 格式格式-可编辑可编辑-专业资料专业资料-Translate 的函数流程图:-完整版学习资料分享-WORD-WORD 格式格式-可编辑可编辑-专业资料专业资料-数据结构实验题目:题目:哈夫曼哈夫曼(Huffman)(Huffman)树与哈夫曼码树与哈夫曼码学学院院:专专业业:学学号号:学生姓名学生姓名:指导教师指导教师:日日期期:-完整版学习资料分享-

    注意事项

    本文(数据结构大作业.pdf)为本站会员(修****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开