📄 main.cpp
字号:
#include <iostream.h>
#include <fstream.h>
#include "huff.h"
#define max 1024
int num=0;
void main()
{
HuffmanTree HT;
HuffmanCode HC;
//////////////////////////
///////文件的读入过程
//////////////////////////
int let[max],len=0;
char temp;
for(int i=0;i<max;i++){
let[i]=0;
}
ifstream f("Sourcefile.txt");
while(f.good()){
temp=f.get ();
let[int(temp)]++;
len++;
}
for(int j=0;j<max;j++){
if(let[j]!=0){
cout<<char(j)<<':'<<let[j]<<endl;
num++;
}
}
f.close();
////////把相应的字母存到zi把权值存到w
char *zi=new char[num];
int *w=new int[num];
for(int k=0,p=0;k<max;k++){
if(let[k]!=0){
zi[p]=char(k);
w[p]=let[k];
p++;
}
}
HuffmanCoding(HT,HC,zi,w,num);
cout<<endl;
cout<<"char weight huffmancode "<<endl;
for(i=1;i<=num;i++)
cout<<HT[i].letter<<" "<<HT[i].weight<<" "<<HC[i]<<endl;
//////////////////////////////////////////////////////////////////////////////////
/////////////////进行huffman编码
/////////////////把每个字符相应的编码存到HuffCode.txt
////////////////////////////////////////////////////////////
ofstream fo("HuffCode.txt");
fo<<"char weight huffmancode "<<endl;
for(i=1;i<num;i++){
fo<<HT[i].letter<<" "<<HT[i].weight<<" "<<HC[i]<<endl;
}
fo.close();
int path[16]={0};
print_htree_ldr(HT, 2*num-1, 0, path,HC);
////////////////////////////////////////////////////////////////
//////////////压缩文件
///////////////////////////////////////////////////////////////
f.open("Sourcefile.txt");
ofstream codef("CodeFile.txt");
while(f.good()){
temp=f.get();
for(i=1;i<=num;i++){
if(temp==HT[i].letter)
codef<<HC[i];
}
}
f.close ();
codef.close ();
//////////////////////////////////////////////////////////
///////////////根据codefile里面的压缩码进行编译
///////////////////////////////////////
f.open ("CodeFile.txt");
fo.open ("TextFile.txt");
int pht=2*num-1;
while(f.good ()){
temp=f.get ();
if(temp=='0')
pht=HT[pht].lchild ;
else if(temp=='1')
pht=HT[pht].rchild ;
if(0<int(HT[pht].letter)&&1024>int(HT[pht].letter)){
fo<<HT[pht].letter ;
pht=2*num-1;
}
}
//////////////////////////////////////////////
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -