
首先,我们来看看main函数:
void main()
{
char choice=' ';
while(choice!='q')
{ cout<<"\n******************************"< cout<<" 欢迎使用赫夫曼编码译码系统"< cout<<"******************************"< cout<<"(1)要初始化赫夫曼链表请输入'i'"< cout<<"(2)输入要编码的字符'w'"< cout<<"(3)要编码请输入'e'"< cout<<"(4)要译码请输入'd'"< cout<<"(5)要打印编码请输入'p'"< cout<<"(6)要打印赫夫曼树请输入't'"< cout<<"(7)要离开请输入'q'"< if(flag==0)cout<<"\n请先初始化赫夫曼链表,输入'i'"< cin>>choice;
switch(choice)
{
case 'i':
Initialization();
break;
case 'w':
InputCode();
break;
case 'e':
Encoding();
break;
case 'd':
Decoding();
break;
case 'p':
Code_printing();
break;
case 't':
Tree_printing(HT,2*n-1);
break;
case 'q':
break;
default:
cout<<"input error"< }
}
free(z);
free(w);
free(HT);
}
这个函数主要就是和用户交互使用。这个过程我用switch case 来实现,你们也可以选择其他的方式实现如if else ,这个就个人爱好选择。下面我们来看看初始化赫夫曼树的函数Initialization()。
void Initialization()
{
flag=1;
int num;
int num2;
cout<<"下面初始化赫夫曼链表"< cin>>num;
n=num;
w=(int*)malloc(n*sizeof(int));
z=(char*)malloc(n*sizeof(char));
cout<<"\n请依次输入"< char base[2];
for(i=0;i {
cout<<"第"< gets(base);//这个地方有点小小的问题
*(z+i)=*base;
}
for(i=0;i<=n-1;i++)
{
cout< }
cout<<"\n请依次输入"< for(i=0;i<=n-1;i++)
{
cout< cin>>num2;
*(w+i)=num2;
}
HuffmanCoding(HT,HC,w,n);
//------------------------打印编码-------------------------------------------
cout<<"字符对应的编码为:"< for(i=1;i<=n;i++)
{
//cout<<"字符"<<*(z+i-1)<<"的编码";
puts(HC[i]);
}
//--------------------------将赫夫曼编码写入文件------------------------
cout<<"下面将赫夫曼编码写入文件"< FILE *hfmTree;
char r[]={' ','\0'};
if((hfmTree=fopen("hfmTree.txt","w"))==NULL)
{
cout<<"can not open file"< return;
}
fputs(z,hfmTree);
for(i=0;i {
fprintf(hfmTree,"%6d",*(w+i));
fputs(r,hfmTree);
}
for(i=1;i<=n;i++)
{
fputs(HC[i],hfmTree);
fputs(r,hfmTree);
}
fclose(hfmTree);
cout<<"已将字符与对应编码写入根目录下文件hfmTree.txt中"< }
正在阅读:
2017年计算机等级考试二级C++辅导:C++实现赫夫曼编码/译码器11-19
[描写春节的作文300字三年级]关于描写春节的作文800字08-29
四川成都市成华区嘉祥外国语学校2023年小升初招生简章06-09
2019江苏常州市金坛区区属学校招聘教师公告【45人】09-23
2023年度中国工商银行河北雄安分行秋季校园招聘公告09-14
2016年党员个人思想报告范文05-01
记小记者国学穿越之旅作文400字07-11