结点的权值 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下载服务。
相关推荐: