哈夫曼树编码

来源:百度知道 编辑:UC知道 时间:2024/09/22 13:43:10
即从一个txt文件中读入一串字符,统计每个字符出现的个数作为哈夫曼树中对应的叶子结点的权值,构建一棵哈夫曼树,然后打印出来该树(须是树形结构的样式),请重点说明怎么统计出字符出现的频率后传给存放权值的数组?例如:文本文档中的内容是“aabcbabd”,读入aabcbabd后,会输出a--3 b--3 c--1 d--1(数组也是动态分配内存的)然后对该树的每个节点进行huffman编码并打印出来,然后再进行译码还原回来成为文本。
最好可以在wintc里面运行

#include<iostream>
#include<string>//存放输入的字符串
using namespace std;
int num[27];//统计字符的个数
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
memset(num,0,sizeof(num));
string st;
cin>>st;
for(int i=0;i<st.size();i++)
{
num[st[i]-'a']++;//st[i]-'a'等于num中的下标
}
char ch;
for(int j=0;j<27;j++)
{
if(num[j]!=0)
{
ch=j+'a';
cout<<ch<<"--"<<num[j]<<" ";
}
}
cout<<endl;
return 1;
}

我建议你换个职业吧。告诉了你就是害了你。别闲我话难听,这是忠告。自己想想吧!