哈弗曼压缩软件C语言代码
//========湖南理工学院====//
//==========作者:余佳,尊重版权=====//
//==========#include============
#include
#include
#include
#include
usingnamespacestd;
#definenumber_array600
#definebase300
structHaffmanTree{
intWeight;
intData;
intLChild;
intRchild;
};
HaffmanTreeHT[number_array];
charInput[number_array],Output[number_array];//input 接受文件名,
long CHART[number_array],char_number = 0,hear;//char 计算某个字符出现的次数,
char_number是表示这个文件中总共出现啦hear表示HAFFMAN 的头节点
char code[number_array][number_array],Weig[8];//weig 表示进制,code 表示记录某个字符子
在hafffman树的顺序
voidinset(); //初始化
intMenu();
voidCompress();
voidDecompression();
voidCalculate_File(); //统计字符出现的次数
voidcodingHaffman(int node,intleft,charc,intdeep);//
voidCreatHaffmanTree(); //创造哈弗曼树
voidSavenode(); //保存密码本
voidPassed();
voidReadThenode(); //
voidDeciphering(); //解压文件的主要函数
//============#include"hear.h"============
//显示菜单
intMenu(){
system("title 夏瑶");
cout<
cout<
cout<
cout<
inta;
cout<
cin>>a;
if(a<0|| a>4){
cout<
for(inti= 0;i<10000;i++)
for(intj=0;j<10000;j++);
system("cls");
Menu();
}
returna;
}
//压缩小函数的主要程序代码
voidCompress(){
cout<
cin>>Input;
strcpy(Output,Input);//复制
strcat(strrchr(Output,'.'),".password");
Calculate_File();
CreatHaffmanTree();
Savenode();
strcpy(strrchr(Output,'.'),".zip");
Passed();
}
//解压小函数的主要程序代码
voidDecompression(){
cout<
cin>>Input;
strcpy(strrchr(Input,'.'),".password");
strcpy(Output,Input);
*strrchr(Output,'.') = '\0'; //变名字,找密码
ReadThenode();
codingHaffman(hear,-1,'0',0);
strcpy(strrchr(Input,'