- 博客(0)
- 资源 (8)
- 收藏
- 关注
huffmanbianma
#include<string.h>
#include"coding_decode.h"
const charSize=1000;
void main()
{
char c[30];
cout<<"请输入编码报文中可能出现的字符,以对其生成编码(出现频率最高的在前面)"<<endl;
//cout<<"请输入编码报文中可能出现的字符以及该字符出现频率权值,以对其生成编码"<<endl;
gets(c);
int L=strlen(c);
code *cipher=new code[L];
for(int i=0;i<L;i++)
{
cipher[i].key=L-i-1;
cipher[i].keymark=c[i];
}
binTree *NewTree=HuffmanTree(cipher,L);
huffcode *hf=coding(NewTree,L);
cout<<"编码字符"<<'\t'<<"对应编码"<<endl;
for(i=0;i<L;i++)
{
cout<<" "<<hf[i].keyc<<'\t'<<'\t'<<hf[i].hufc<<endl;
}
int r;
cout<<endl<<"对报文Huffman编码,请输入'1'"<<endl
<<"对报文Huffman解码,输入'2'"<<endl<<"退出,输入'0':";
cin>>r;
while(r)
{
if(r==1)
{
cout<<"请输入要编码的报文内容:"<<endl;
char ch[charSize];
gets(ch);
int mark=0;
cout<<"该报文的编码是:";
for(i=0;i<strlen(ch);i++)
{
for(int j=0;j<L;j++)
{
if(ch[i]==hf[j].keyc)
{
cout<<hf[j].hufc;
mark=1;
}
}
if(mark==0) cout<<"你输入的报文内容中有非编码的字符!";
}
}
if(r==2)
{
cout<<"请输入要解码的报文:"<<endl;
char chr[charSize];
gets(chr);
cout<<"该报文经解码后是:";
decode(NewTree,chr);
}
cout<<endl<<"对报文进行Huffman编码,请输入'1'"<<endl
<<"对报文进行Huffman解码,输入'2'"<<endl<<"退出,输入'0':";
cin>>r;
}
}
2008-10-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人