哈夫曼编码解码实验报告材料.doc
《哈夫曼编码解码实验报告材料.doc》由会员分享,可在线阅读,更多相关《哈夫曼编码解码实验报告材料.doc(9页珍藏版)》请在课桌文档上搜索。
1、word哈夫曼编码解码实验1. 实验要求掌握二叉树的相关概念掌握构造哈夫曼树,进展哈夫曼编码。对编码容通过哈夫曼树进展解码。2. 实验容通过二叉树构造哈夫曼树,并用哈夫曼树对读取的txt文件进展哈夫曼编码。编码完成后通过哈夫曼树进展解码。#include#include#define MAX 100/定义哈夫曼树的存储结构typedef structchar data;int weight;int parent;int lch;int rch;HuffNode;/定义哈夫曼编码的存储结构typedef structchar bitMAX;int start;HuffCode;HuffNode
2、ht2*MAX;HuffCode hcdMAX;int Coun127=0;int n;char s1200000;char text5000;/构造哈夫曼树void HuffmanTree()int i,j,k,left,right,min1,min2;/printf(输入叶子的节点数:);/scanf(%d,&n);printf(字符数量=%dn,n);for(i=1;i=2*n-1;i+)hti.parent=hti.lch=hti.rch=0;j=0;for(i=1;i=n;i+)/*getchar();printf(输入第%d个叶子节点的值:,i);scanf(%c,&hti.dat
3、a);printf(输入该节点的权值:);scanf(%d,&hti.weight);*/for(;j127;j+)if(Counj!=0)hti.data=j;/printf(%c,hti.data);hti.weight=Counj;/printf(%d,hti.weight);break;j+;printf(n);for(i=1;i=n;i+)printf(%c,hti.data);printf(n);for(i=n+1;i=2*n-1;i+)/在前n个结点中选取权值最小的两个结点构成一颗二叉树min1=min2=10000;/为min1和min2设置一个比所有权值都大的值left=ri
4、ght=0;for(k=1;k=i-1;k+)if(htk.parent=0)/假如是根结点 /令min1和min2为最小的两个权值,left和right为权值最小的两个结点位置 if(htk.weightmin1) min2=min1; right=left; min1=htk.weight; left=k; else if (htk.weightmin2) min2=htk.weight; right=k; htleft.parent=i; htright.parent=i; hti.weight=htleft.weight+htright.weight; hti.lch=left; ht
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈夫曼 编码 解码 实验 报告 材料

链接地址:https://www.desk33.com/p-17596.html