第一范文网 - 专业文章范例文档资料分享平台

哈夫曼编码课程设计报告 (5)

来源:用户分享 时间:2020-06-17 本文由小小的萌 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

结点的权值 ht[i].weight=cishu[i]; for(i=num+1;i<=2*num-1;i++) { //选择parent为0且权值最小的两个根结点,其序号为s1和s2,i为双亲 select_min(ht,i-1,s1,s2); ht[s1].parent=i;ht[s2].parent=i; ht[i].left=s1; ht[i].right=s2; ht[i].weight=ht[s1].weight+ht[s2].weight; } for(i=0;i<=num;i++) hc[i].ch=str[i]; //字符的种类 i=1;while(i<=num) printf(\字符%c次数:?\\n\ }

void Huffman_bianma(HuffmanTree T,HuffmanCode H) //根据哈夫曼树T求哈夫曼编码H { int child,parent,i; //child和parent分别指示t中孩子和双亲 char code[n]; //存放编码 int start; //指示码在code中的起始位置 code[num]='\\0'; //最后一位(第num个)放上串结束符 for(i=1;i<=num;++i) { start=num; //初始位置 child=i; //从叶子结点到根结点进行遍历 while((parent=T[child].parent)>0) //直至t[child]是树根为止 { //若t[child]是t[parent]的左孩子,则生成0;否则生成1 if(T[parent].left==child) code[--start]='0'; else code[--start]='1'; child=parent; } strcpy(H[i].co,&code[start]);

20

H[i].len=num-start; } }

void coding(HuffmanCode hc ,char *str)

{ //对str所代表的字符串进行编码 并写入文件 }

void output() //输出编码 { printf(\}

int fileopen(char string[])

int i,j; FILE *fp; fp=fopen(\while(*str) { for(i=1;i<=num;i++) if(hc[i]. ch==*str){ for(j=0;j<=hc[i].len;j++) fputc(hc[i].co[j],fp); break; } str++; }fclose(fp); FILE *fp; char ch; if((fp=fopen(\{ printf(\ exit(0); } printf(\编码为:\\n\ch=fgetc(fp); while(!feof(fp)) { putchar(ch); ch=fgetc(fp); } //读入文件

21

{ FILE *fp;

if((fp=fopen(\数据结构课程设计\\\\file.txt\ printf(\ }

//主函数

void main() { HuffmanTree HT; scanf(\

{ printf(\不能打开文件!\\n\ exit(1); } while(fgets(string,100,fp)!=NULL) fclose(fp); return 0; char string[100]; char *s,str[27]; int cishu[27]; HuffmanCode HC; int x; printf(\ printf(\ 哈夫曼编码 *****\\n\ printf(\while(1) { printf(\请选择\ printf(\开始\\n\ printf(\输出各字符统计个数\\n\ printf(\编码\\n\printf(\输出编码\\n\ printf(\退出\\n\ switch(x)

22

fileopen(string);

种类及各类字符出现的次数

成哈夫曼编码 件 }

{ case 1: printf(\读出文本为:\\n\

break; case 2: num=tongji(string,cishu,str); //统计字符的 Create_huffmanTree(HT,HC,cishu,str); break; case 3:

Huffman_bianma(HT,HC); //生 coding(HC,string); //建立电文哈夫曼编码文 break; case 4: output(); break; case 5: exit(0); free(HT); default: printf(\输入错误!\\n\ continue;

}

}

23

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新经管营销哈夫曼编码课程设计报告 (5)全文阅读和word下载服务。

哈夫曼编码课程设计报告 (5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1082480.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top