哈夫曼编码和译码的算法设计与实现.pdf
《哈夫曼编码和译码的算法设计与实现.pdf》由会员分享,可在线阅读,更多相关《哈夫曼编码和译码的算法设计与实现.pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验名称哈夫曼编码和译码的算法设计与实现实验方案实验成绩实验日期实 验 室信息系统设计与仿真室I 实验操作实验台号班级姓名实验结果一、实验目的1、掌握哈夫曼编码的二叉树结构表示方法;2、编程实现哈夫曼编码译码器;3、掌握贪心算法的设计策略。二、实验任务 从文件中读取数据,构建哈夫曼树;利用哈夫曼树,对输入明文进行哈夫曼编码;利用哈夫曼树,对输入编码译码为明文。三、实验设计方案1、结构体设计Huffman 树:包括字符,权,父亲下标,左孩子下标,右孩子下标#define N 29/26 个小写字母,逗号,句号和空格字符.struct treenode/静态链表char c;/char int w
2、;/weight int f;/father int l;/left child index int r;/right child index;struct treenode htree2*N-1;2、自定义函数设计函数原型声明void input();/读取文件字符、权值数据void huffman();/建立 huffman 树void getcode(int i,char*str);/得到单个字符的huffman 编码void encode(char ch);/将明文进行huffman 编码void decode(char*str);/将 huffman 编码译为明文 读取文件字符、权值
3、数据void input()int i;char c;int f;freopen(in.txt,r,stdin);for(i=0;iN;i+)c=getchar();/接收字符scanf(%d,&f);/接收权值getchar();/接收回车hti.c=c;hti.w=f;hti.l=hti.f=hti.r=-1;/初始化父亲、左右孩子下标 freopen(CON,r,stdin);建立 huffman 树/使用贪心法建立huffman 树,每次选择权值最小的根结点void huffman()void huffman()int j,k,n;input();j=0;k=N;for(n=N;n2*
4、N-1;n+)/建立 huffman 树,共合并N-1 次int r=0,s=0;htn.l=htn.f=htn.r=-1;while(rhtj.w)&jN)s+=htj.w;if(r=0)htn.l=j;/修改父亲、孩子下标else htn.r=j;htj.f=n;j+;else s+=htk.w;if(r=0)htn.l=k;/修改父亲、孩子下标else htn.r=k;htk.f=n;k+;r+;文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4
5、Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z
6、8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5
7、文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3
8、I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W
9、8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6
10、T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3
11、U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5htn.w=s;/修改权值 根据字符下标找到字符的huffman 编码/根据字符所在的下标,从叶子结点往上搜索到根节点,然后逆置得到该字符的huffman 编码void getcode(int i,char*str)int n,j,l=0;for(n=i;htn.f!=-1;n=htn.f)/沿着父亲往上搜索int m=htn.f;if(n=htm.l)strl+=0;/左孩子记为0 else strl+=1;/右孩子记为1 for(j=0;j=(l-1
12、)/2;j+)/将编码逆置char t;t=strj;strj=strl-1-j;strl-1-j=t;strl=0;/str 存放 huffman 编码,字符串结束标记 读入明文生成huffman 编码void encode(char ch)int i;char strN;for(i=0;hti.c!=0;i+)if(hti.c=ch)/找字符下标break;if(hti.c!=0)getcode(i,str);/得到字符的huffman 编码printf(%s,str);将 huffman 编码串译码为明文void decode(char*str)while(*str!=0)int i;f
13、or(i=2*N-2;hti.l!=-1;)if(*str=0)文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W
14、5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5
15、P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF
16、10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW
17、6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5D5P9W6T5文档编码:CF10W3U3I4Z9 HW6W5C7W8Z8 ZU5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈夫曼 编码 译码 算法 设计 实现
限制150内