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

应用数据结构课程设计(哈夫曼树)

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

Hfm.HC=(HuffmanCode)malloc((n+1)*sizeof(char *));//分配n个字符编码的头指针向量

cd=(char *)malloc(n*sizeof(char));//分配求编码的工作空间 cd[n-1]='\\0';//编码结束符

for(i=1;i<=n;++i)//逐个字符求哈夫曼编码 {

start=n-1;//编码结束符位置

for(c=i,f=Hfm.HT[i].parent;f!=0;c=f,f=Hfm.HT[f].parent)//从叶子到根逆向求编码

{

if(c==Hfm.HT[f].lchild) cd[--start]='0'; else cd[--start]='1'; }

Hfm.HC[i]=(char *)malloc((n-start)*sizeof(char)); strcpy(Hfm.HC[i],&cd[start]);//从cd复制编码到Hfm.HC }

free(cd);//释放工作空间 return Hfm; }

19

Huffman InputHuffman(Huffman Hfm)//输入函数,控制用户输入字符和相应权值 {

int i,n;

printf(\

printf(\chars and weights will be saved in the file :\\hfmTree\\ \\n\ printf(\ scanf(\ if(n<=1)

{printf(\若只有一个数值则无需编码

printf(\

printf(\ scanf(\

Hfm.HT=(HuffmanTree)malloc((2*n)*sizeof(HTNode)); Hfm.c=(char *)malloc((n+1)*sizeof(char)); for(i=1;i<=n;i++) {

printf(\ scanf(\

20

printf(\ scanf(\

Hfm.HT[i].parent=0; Hfm.HT[i].lchild=0; Hfm.HT[i].rchild=0; }

for(;i<=2*n-1;++i) {

Hfm.HT[i].weight=0; Hfm.HT[i].parent=0; Hfm.HT[i].lchild=0; Hfm.HT[i].rchild=0; }

Hfm.length=n; return Hfm; }

Huffman InitHuffman(Huffman Hfm)//初始化哈夫曼数,要求用户输入字符和相应权值

21

{

int n,i,x; FILE *fp;

fp=fopen(\对文件hfmTree以读文本的形式打开 if(fp==NULL) {

Hfm=InputHuffman(Hfm);//调用InputHuffman函数,用户输入字符和相应权值存入哈夫曼数中

fp=fopen(\ fprintf(fp,\ for(i=1;i<=Hfm.length;i++)

fprintf(fp,\ rewind(fp); } else

{printf(\already existed!\\nDo You Want To Make A New One?('Y'or'N')\\n\\n\询问是否重新初始化

scanf(\ if(x=='Y')

{ Hfm=InputHuffman(Hfm);//调用InputHuffman函数,用户输入字符和相应权值存入哈弗曼数中

fp=fopen(\

22

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