哈夫曼树实验报告(2)_第1页
哈夫曼树实验报告(2)_第2页
哈夫曼树实验报告(2)_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告实验名称ufmn 编码专业班级 计科三班 姓名 学号指导教师 日期2014、 2、20、实验目得熟练掌握二叉树应用 (Hffan 编码)得基本算法实现。二、实验内容.对输入得一串电文字符实现 u fma编码 ,再对 Huffm n 编码生成得代码串进行译码 输出电文字符串。实现功能如下:H ffman 树得建立Huf a编码得生成 编码文件得译码三、实验要求设计思路 :数据结构 :#efi e n 00?/叶子结点数 #eine m 2*n1 / Huffman 树中结点总数 typedef struc ? it ight; /权值? t lchild , r hil , parent

2、; /左右孩子及双亲指针HTN de; /树中结点类型 t pedef HTNo e Huff an r m+ ; 0/ ?号单元不用 主要实现函数 :统计字符串中字符得种类以及各类字符得个数得函数 构造 Huffman 树得函数Huffman 编码得函数 建立正文得编码文件得函数 代码文件得译码函数 主函数四、实验概要设计)功能框图退出五、使用说明、运行环境 : + 、 02 、首先选择主控菜单中得操作 , 即建表 , 然后进行其它操作 六实验截图七 实验体会3、在逆向求编码得 fo 循环里犯了一个逻辑错误导致求出来得3、位编码串行 , 尝试了多钟数据输入才找到原因所在 , 并加以改正 ,

3、编写程序需一步一步得去调试并找到错误所在。附源程序 :?# c ude<std o、h> #ncl < td i 、 h> #inclu e<str ng、 h> i lu e<malloc 、 h> type e str ct char aa; / 结点字符 intwe ht; / 结点权值 nt par nt,lchild,rch d; / 父子结点 TNod ,* H f ma Tr e; ype e har * Huff anC de;void Selec (H ffmanTree H , int m, nt& s , i t&a

4、mp; 2) nt i; = 1;or (i=1 ; i<= ; i+)i (HTi 、 pa nt=0) s1=i; brea ; for(i i+1; i < m; i+ )if (HTi、 ar t = Ts 、 weig t> Ti 、 wight)s1=i ; r ( =1; i < = ; i+ )if( Ti 、paent=0 &! s) s2 i;bre k; f r(i i 1; i < = ; i+) f(HTi 、 paren = & H 、 wei ht < H s 、 w i h & !=s1)s2 i ;v

5、od Huff anCo ng(HuffmanTree &HT , Huf anCode &H,i t* w,int n) / w存放 n 个字符得权值 ,构造赫夫曼树 HT,并求出个字符得赫夫曼树编码H t f ;int m,i, 1, 2;int c;ffmane p;cha *cd;if (n)ret r ;m=*n-1;HT=(Huff a T ee)ma l (m 1)* i f(H N de) ;r(p H+1,i=1 ; =n;+ , +p, +)(*p)、 we g= w;(p)、are t= ;(p)、lchild=;(*p )、 ld ; fo ( ;i m

6、; +i,+p)(*p) 、 parent 0 ; f r(i= ,s 、 S lect(H H s1 、 1;i<= ;+ ) / 建立赫夫曼树 /在T1、i1选择 ant 为0且 w h最小得两个节点 , 其序号分别为 s,-1, 1,s );parent=i;HT 、pr n=; 1;Hi 、rch ld s; we ght;HTi 、 lchild= H、wight=HT 1 、 w ight+H s2 、 /* 从叶子到根逆向求每个字符得赫夫曼编码 C=(Hu manCode)m lloc( + ) *sizeof d=(c a ) llo (n* ize f ( '(

7、 i 1; <n; +i )int sta t; st rt=n-1;( , =HTi 、 ar nt ; f!= ;cha *);/ h r);/fofoif(H 、lchi d=c) cd-start = ' else -s art=' HCi =(char *)m lloc(n st cpy ( HCi,&c tar free( d); vid ain()sta );t)*s/=, f HTf分配个字符编码得头指针向量/ 分配求编码得工作区间 编码结束符逐个字符求赫夫曼树编码/ 编码结束符位置 parent ) / 从叶子到根逆向求编码 eof(c a) ); / /为第个字符编码分配空间 从 cd 复制编码 ( 串)到 HC释放空间 ffm nTree HT; uff anCo H ; int * , n,i;pri tf(" 请输入权值得个数 caf ("%d" ,&); w=(int *)ma loc(n*si ( ):); (t));printf ( " 请依次输入 %d个权值 ( 整型 ):n",n); for(i=0;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论