程序所能达到的功能:
根据给定的字符和其中每个字符的频度,构造哈夫曼树,字符出现的频率作为结点的值
并输出字符集中每个字符的哈夫曼编码.
将给定的字符串根据其哈夫曼编码进行编码,并进行相应的译码.
#include<iostream>
#include<string>
#define maxvalue 12
#define maxleaf 12
#define maxnode 23
using namespace std;
int n=0;
int v=0;
string s;
typedef struct{
char ch;
int num;
}inf;
inf info[12];
typedef struct{
int weight;
//权值
int parent;
int lchild;
int rchild;
}Hnodetype;
typedef Hnodetype Hufftree[maxnode];
//-------------------------------------
const int maxbit=10;
typedef struct{
int bit[maxbit];
int start;
}Hcodetype;
void fundchar()
{
int k,m;
cout<<"请输入字符串"<<endl;
cin>>s;
while(s[v]){
v++;}
cout<<"共有字符"<<v<<"个"<<endl;
info[0].ch=s[0];info[0].num=1;
for(k=1;k<=v;k++)
{
for(m=0;m<=n;m++)
{
if(info[m].ch==s[k]){
++info[m].num;break;}}
if(m>n){
info[++n].ch=s[k];info[n]